【问题标题】:Azure Cosmos DB Mongo API Bug With NOT IN未出现的 Azure Cosmos DB Mongo API 错误
【发布时间】:2017-05-13 06:25:12
【问题描述】:

我使用 Mongo API 在我的 Cosmos DB 中存储了以下文档:

{
    "_id" : ObjectId("59157eaabfeb1900011592c8"),
    "imageResourceId" : "1489496086018.png",
    "gallery" : "Tst",
    "thumbnailRaw" : {
        "$binary" : "<SNIP>",
        "$type" : "00"
    },
    "tags" : [
        "Weapon/Sword",
        "Japanese"
    ],
    "__v" : 1
}

我正在尝试执行一个排除包含“日语”标签的任何对象的查询。我制作了以下查询,它在真实的 Mongo DB 上正确执行(即,它不返回上述文档):

{"gallery":"Tst, "tags":{"$nin":["Japanese"]}}

在 Cosmos DB 上,此查询返回上图,尽管在 $nin 数组中找到了一个字符串。我是否正确执行此查询? Cosmos DB 是否有另一种受支持的方式来执行 NOT IN 逻辑操作?

【问题讨论】:

  • 好像API不完整。我遇到了一些在 MongoDb 上运行但在 CosmosDb 上失败的查询
  • 微软没有指定支持哪个版本或级别的 MongoDB API cosmosDB 真的很糟糕。事实证明,cosmosDB 对当前 MongoDB API v3.4 的支持非常有限,并且缺少很多功能。更糟糕的是,文档也非常稀缺

标签: mongodb azure-cosmosdb


【解决方案1】:

我对 CosmosDB 有一个不同的问题,这让我对数组操作进行了一些测试,我相信在你的情况下这应该可以工作:

db.gallery.find({"tags":{"$elemMatch":{$nin: ["japanase"]}}} )

我的问题:

Azure Cosmos DB check if array in field is contained in search array

我同意 CosmosDB 仅实现 mongoDB 的一个子集的评论,并且文档非常稀缺,但我希望我提出的修复对你有用。

【讨论】:

    猜你喜欢
    • 2023-02-21
    • 2021-11-14
    • 2019-06-05
    • 1970-01-01
    • 1970-01-01
    • 2020-08-03
    • 1970-01-01
    • 2021-06-15
    • 1970-01-01
    相关资源
    最近更新 更多