为了账号安全,请及时绑定邮箱和手机立即绑定

Mongodb 在 Java 中将 .Net GUID 转换为 BinData

Mongodb 在 Java 中将 .Net GUID 转换为 BinData

C#
幕布斯6054654 2021-11-07 19:50:33
我正在使用 Mongo .Net 驱动程序在 MongoDB 中插入文档,我需要使用 Java 驱动程序获取文档。我的型号:public class Person{ public Guid Id {get;set;} public Guid FatherId{get;set;} public string Name{get;set;}}我正在使用以下 C# 代码向 MongoDb 插入一个文档。var id= Guid.NewGuid();Persons.InsertOne(new Person(){Id = id,Name = "Joe"});现在,有了 id,如何使用 Mongo Java 驱动程序找到相同的文档?我试过:Person person=Persons.find(eq("_id", id))).first();但是我没有得到任何结果,我已经研究过了,似乎在使用 find 之前应该将 id 转换为 Base64。所以我尝试了以下方法: public String uuidToBase64(String str) {    java.util.Base64.Encoder encoder=Base64.getUrlEncoder();    UUID uuid = UUID.fromString(str);    ByteBuffer uuidBytes = ByteBuffer.wrap(new byte[16]);    uuidBytes.putLong(uuid.getMostSignificantBits());    uuidBytes.putLong(uuid.getLeastSignificantBits());    return encoder.encodeToString(uuidBytes.array());}Person person=Persons.find(eq("_id", BinData(3,uuidToBase64(id))))).first();那还是不行。
查看完整描述

1 回答

?
aluckdog

TA贡献1847条经验 获得超7个赞

对于其他人的参考,根据答案,以下内容对我有用:


首先将 id 转换为字符串类型。


  Document doc = mongoCollection

    .find(eq("_id", new Binary((byte) 3, Base64.getDecoder().decode(uuidToBase64(id)))))

    .first();

编码方式:


  public static String uuidToBase64(String str) {

        java.util.Base64.Encoder encoder=Base64.getEncoder();

        UUID uuid = UUID.fromString(str);

        ByteBuffer bb = ByteBuffer.wrap(new byte[16]);

        bb.putLong(uuid.getMostSignificantBits());

        bb.putLong(uuid.getLeastSignificantBits());

        byte[] java=bb.array();

        byte[] net= new byte[16];

        for (int i = 8; i < 16; i++) {

            net[i] = java[i];

        }

        net[3] = java[0];

        net[2] = java[1];

        net[1] = java[2];

        net[0] = java[3];

        net[5] = java[4];

        net[4] = java[5];

        net[6] = java[7];

        net[7] = java[6];

        return encoder.encodeToString(net);

}


查看完整回答
反对 回复 2021-11-07
  • 1 回答
  • 0 关注
  • 234 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信