我们正在使用 Mongo Java 客户端从 mongoDB 迁移到 CosmoDB。我们在数组查询行为中遇到了以下差异。
我们的文档如下所示
[{
"name":"garry",
"pets":["cats","dogs"]
},
{
"name":"sally",
"pets":["cats","fish"]
}]
使用 mongo 查询
find({"pets":"cats"})
将返回garry
和sally
,但是使用cosmoDB我们得到零结果。
有没有办法修改查询以复制相同的 mongo 行为?
我们还有类似于以下内容的文档,我们根据类型进行查询
[{
“姓名”:“加里”,
“宠物”:[{
“类型”:“猫”,
“名称”:“手套”
}, {
“类型”:“狗”,
“名称”:“最大”
}]
},
{
“姓名”:“莎莉”,
“宠物”:[{
“类型”:“猫”,
“姓名”:“保罗”
}, {
“类型”:“鱼”,
“名称”:“泡泡”
}]
}
]
当前的 mongo 查询看起来像
find({"pets.type": "fish"})
在
最佳答案
我尝试使用下面的查询,它有效。
使用 MongoShell。
find({"pets": {$all: ["cats"]}})
对于 Mongo Java 驱动程序
FindIterable<Document> queryResult = collection.find(Filters.all("pets", "cats"));
关于java - Cosmos DB 使用 Mongo 驱动程序查询数组中的值似乎不可能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44792682/