cosmosdb mongo api不适用于某些命令

时间:2017-06-16 10:51:17

标签: mongodb azure azure-cosmosdb

我在azure上使用 cosmosdb 我正在使用 mongodb api
我有一个"请求" 集合,里面有一个"声明" 数组

如果我使用此命令:

db.getCollection('requests').find({"claims.id": 1002})

它在cosmosdb mongo api中不起作用,但是为我托管的本地mongo服务实例工作。

我的请求对象如下

{
    "_id" : NumberLong(1001),
    "claims" : [ {
            "type" : "broadband",
            "id" : NumberLong(1002),
            "createdOn" : NumberLong(1462799667905)
              } ]
}

1 个答案:

答案 0 :(得分:2)

并非所有MongoDB的查询语法/功能都已实现。这似乎就是这种情况。

然而,这个轻微的解决方法应该适合您 - 我只是在我自己的CosmosDB(MongoDB API)集合上测试它:

db.getCollection('request').find({claims: { $elemMatch: { id:1002 }}}).pretty()
{
  "_id" : 1001,
  "claims" : [
    {
      "type" : "broadband",
      "id" : 1002,
      "createdOn" : NumberLong("1462799667905")
    }
  ]
}

请注意,您也可以拨打db.request.find(),而无需拨打getCollection()