亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

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 關注
  • 262 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號