簡體   English   中英

如何使用 Stitch 在 MongoDB Atlas 上執行“不同”的 MongoDB 查詢

[英]How to perform a "Distinct" MongoDB query on MongoDB Atlas using Stitch

我正在構建一個 Android 應用程序,並使用 MongoDB Atlas 服務作為我的數據庫。 這是我第一次使用 MongoDB,我對文檔的薄弱程度感到驚訝。

MongoDB 要求我使用縫合客戶端庫來與 Atlas 服務交互。 我正在使用最新的 'org.mongodb:stitch:0.1.0-SNAPSHOT' 庫他們執行 FIND 的示例/模式是這樣的......

 Document query = new Document()
            .append(Review.Field.RESTAURANT_ID, restaurant.getId())
            .append(Review.Field.OWNER_ID, getUserId());

   getDatabase().getCollection(DBCollections.REVIEWS_RATINGS).find(query).continueWith...

我正在嘗試執行此處所述的“Distinct”命令。 看起來我從 Mongo 獲取信息的唯一方法是 FIND 方法,而且看起來我必須自定義查詢的唯一方法是更改​​我構建並隨方法調用一起發送的查詢文檔。 如果我創建這樣的查詢文檔...

 Document query = new Document()
            .append("distinct","Restaurants")
            .append("key","type");

...返回空白。 我希望它從該集合中返回一組獨特的餐廳類型(字符串)。

我也許可以使用管道,但該文檔比 Stitch 庫的文檔更缺乏。 我已經使用 Stitch 控制台中的 Debug 控制台嘗試了 Find 和 Aggregate 查詢。 它看起來像是一個有用的調試工具,但它要求查詢采用 JSON 格式,而且我還沒有找到任何描述如何將查詢格式化為他們想要的 JSON 模式的文檔。

我希望有人可以告訴我如何使用 Stitch 在 MongoDB Atlas 上完成“不同”的 MongoDB 查詢。

經過一天的調查,我確實做了一些類似於解決方案的事情,至少它可以在管道中工作……今晚晚些時候我會檢查它是否可以在使用 Stitch 客戶端庫的代碼中工作。

這是在 Stitch 調試控制台中工作的 JSON:

   {
  "database": "<DATABASE>",
  "collection": "<COLLECTION>",
  "pipeline": [
    {
      "$group": {
        "_id": "$category"
      }
    }
  ]
}

執行此返回...

{
  "result": [
    {
      "_id": "Category1"
    },
    {
      "_id": "Category2"
    }
  ]
}

這並不完美,因為我真的希望 MongoDB 返回一個字符串數組而不是對象數組。 但正如這里所描述的,它只是一種 Map 方法,所以我會接受它。


*** 編輯

好的,現在是凌晨 2 點 30 分,但我終於讓代碼工作了。 我會把它貼在這里給任何試圖做類似事情的人......

// the next 2 lines are the import part
List<Document> pipeline = new ArrayList<>();
pipeline.add(new Document("$group", new Document("_id","$category")));

Document args = new Document();
args.put("database", Statics.DB_NAME);
args.put("collection", DBCollections.POIS);
args.put("pipeline", pipeline);

mStitchClient.executePipeline(new PipelineStage("aggregate", Statics.SERVICE_NAME, args)).continueWith...(omitted)

這些都是 BSON 對象。 棘手的部分是在文檔中包含 bson 文檔。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM