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

Mongodb在Java中将.Net GUID转换为BinData,java,c#,mongodb,Java,C#,Mongodb,我正在使用Mongo.Net驱动程序在MongoDB中插入文档,我需要使用Java驱动程序获取文档 我的模型: public class Person{ public Guid Id {get;set;} public Guid FatherId{get;set;} public string Name{get;set;} } 我正在使用下面的C代码向MongoDb插入一个文档 现在,有了id,我如何使用Mongo Java驱动程序找到相同的文档? 我试过: 但我没有得到任何结果,我已经

我正在使用Mongo.Net驱动程序在MongoDB中插入文档,我需要使用Java驱动程序获取文档

我的模型:

public class Person{
 public Guid Id {get;set;}
 public Guid FatherId{get;set;}
 public string Name{get;set;}
}
我正在使用下面的C代码向MongoDb插入一个文档

现在,有了id,我如何使用Mongo Java驱动程序找到相同的文档? 我试过:

但我没有得到任何结果,我已经研究过了,似乎在使用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();

这仍然不起作用。

对于其他参考,基于,以下内容对我有效:

首先将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);
}
公共静态字符串uuidToBase64(字符串str){
java.util.Base64.Encoder编码器=Base64.getEncoder();
UUID UUID=UUID.fromString(str);
ByteBuffer bb=ByteBuffer.wrap(新字节[16]);
bb.putLong(uuid.getMostSignificantBits());
bb.putLong(uuid.getLeastSignificantBits());
字节[]java=bb.array();
字节[]净=新字节[16];
对于(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];
返回编码器.encodeToString(净);
}
  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);
}