gpt4 book ai didi

mongodb - Azure Cosmos DB 检查字段中的数组是否包含在搜索数组中

转载 作者:可可西里 更新时间:2023-11-01 10:49:06 25 4
gpt4 key购买 nike

我有一个 Microsoft Azure CosmosDB MongoDB Api 数据库,我正在尝试获取一个数组字段完全包含在我的搜索数组中的所有文档。

因此,我要寻找的是,考虑到包含文档的集合测试:{"id":1,"过滤器":[1,2]}
{"id":2,"过滤器":[1,3]}

如果我执行:db.test.find({"filters":{"$elemMatch":{$nin: [1,3]}}})

我回来了:{"id":1,"filters":[1,2]}

但是,如果我否定它,因为我希望所有带有过滤器的文档完全包含在我的搜索中,则会返回完整的文档列表。db.test.find({"filters":{$not:{"$elemMatch":{$nin: [1,3]}}}})

返回:

{"id":1,"过滤器":[1,2]}
{"id":2,"过滤器":[1,3]}

与文章中提到的相反: Check if every element in array matches condition

我还在聚合上尝试了 $issubset,但无济于事(0 个结果):

db.test.aggregate([{$match:{$issubset:["$filters",[1,3]]}}])

我什至尝试过( 0 个结果):

db.test.aggregate([{$match:{$issubset:[[1],[1,3]]}}])

有人知道她发生了什么事吗?

  • 是我的错误吗?

  • 列表项 我是否使用了 CosmosDB 中尚未实现的 mongoDB 功能?

  • 这是 CosmosDB 错误吗?

谢谢!

最佳答案

我在测试 $nin 时遇到服务器错误。然后我尝试使用 $and 组合多个子查询,效果很好。请使用以下代码查询所有包含在您的搜索中的过滤器的文档。

{ "filters": NumberInt(1), $and: [ { "filters": NumberInt(3) } ] }

关于mongodb - Azure Cosmos DB 检查字段中的数组是否包含在搜索数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45033663/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com