Azure CosmosDB MongoDB如何查询:查询资源管理器

时间:2017-08-02 02:02:03

标签: azure-cosmosdb

我正在探索Azure CosmosDB,并且无法理解如何查询我的收藏。我创建了一个Web应用程序来添加和查询数据,但我想在Azure中搜索,不知道我应该如何构建我的查询。

目前我查询我的收藏集,以便返回所有内容。

SELECT * FROM c

这会返回很多信息。以下是数据的样本示例。

  {
    "$t": 3,
    "$v": {
      "searchTerm": {
        "$t": 2,
        "$v": "test"
      },
      "searchDate": {
        "$t": 9,
        "$v": 1501606675858
      },
      "_id": {
        "$t": 7,
        "$v": "Y³\u0013&Ò#\bø\u0005+ú"
      },
      "__v": {
        "$t": 16,
        "$v": 0
      }
    },
    "id": "NTk4MGIzMTMyNmQyMjMwOGY4MDUyYmZh",
    "_rid": "pR8YAPXxJQABAAAAAAAAAA==",
    "_self": "dbs/pR8YAA==/colls/pR8YAPXxJQA=/docs/pR8YAPXxJQABAAAAAAAAAA==/",
    "_etag": "\"020094b9-0000-0000-0000-5980b3130000\"",
    "_attachments": "attachments/",
    "_ts": 1501606672   }

有没有办法只查询某个“searchTerm”(我的CosmosDB中的一个字段)。我似乎无法掌握语法来过滤我的查询。我尝试了一些在SQL中似乎有意义的事情的组合,但它们都没有用。

感谢您的帮助。

2 个答案:

答案 0 :(得分:2)

在Jesse的帮助下,我最终能够使用SQL“查询资源管理器”API来查询我的查询。

正如他解释的那样,因为我正在使用MongoDb的一个实例,所以我应该使用Mongo Query API,可以通过进入“Data Explorer” - >来访问Azure。选择你的收藏 - > “新的Mongo查询”。从那里你可以使用类似的东西进行搜索...

{searchTerm: "test"}

返回所有带有测试值的searchTerms。

如何使用SQL查询资源管理器

我想使用SQL Query Explorer执行相同的查询,经过一些试验和错误后,以下语法似乎有效。

select *
from collection
where collection["$v"].searchTerm["$v"] = "test"

不是最漂亮的解决方案,但它有效。只是想提一下,以防其他人试图用SQL Query Explorer查询他们的mongodb。

我不熟悉这种语法,我能找到的所有文档都没有提到这个独特的案例。

感谢。

答案 1 :(得分:1)

正如您在评论中所述,您使用的是Mongoose,这是一个用于与Mongo交互的ORM。如果您使用Mongo API插入数据,则还需要使用Mongo API查询数据,因为它们是为了支持包含所有$符号的文档格式而构建的。