java - Cosmos DB 使用 Mongo 驱动程序查询数组中的值似乎不可能

标签 java azure-cosmosdb

我们正在使用 Mongo Java 客户端从 mongoDB 迁移到 CosmoDB。我们在数组查询行为中遇到了以下差异。

我们的文档如下所示

[{
    "name":"garry",
    "pets":["cats","dogs"]
},
{
    "name":"sally",
    "pets":["cats","fish"]
}]

使用 mongo 查询
find({"pets":"cats"})

将返回garrysally,但是使用cosmoDB我们得到零结果。 有没有办法修改查询以复制相同的 mongo 行为?

我们还有类似于以下内容的文档,我们根据类型进行查询

[{ “姓名”:“加里”, “宠物”:[{ “类型”:“猫”, “名称”:“手套” }, { “类型”:“狗”, “名称”:“最大” }] }, { “姓名”:“莎莉”, “宠物”:[{ “类型”:“猫”, “姓名”:“保罗” }, { “类型”:“鱼”, “名称”:“泡泡” }] } ]

当前的 mongo 查询看起来像
find({"pets.type": "fish"})

最佳答案

我尝试使用下面的查询,它有效。

  1. 使用 MongoShell。

    find({"pets": {$all: ["cats"]}})
    
  2. 对于 Mongo Java 驱动程序

    FindIterable<Document> queryResult = collection.find(Filters.all("pets", "cats"));
    

关于java - Cosmos DB 使用 Mongo 驱动程序查询数组中的值似乎不可能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44792682/

相关文章:

azure - DocumentDB 性能问题

用于 10-100MB json 文件的 Azure 存储选项作为 HDInsigt Hadoop/Spark 的源

azure - 创建新的 Azure Cosmos DB 时缺少位置选项

azure - 更新 Azure CosmosDB 分区键和分区键值

azure - 在 DocumentDB 中划分租户和主机名的最佳方法是什么?

java - 强制转义 Spring 中 XML 编码中的特殊字符

java - 传递国家/地区名称时获取所有州/地区/城市

java - 还有其他方式使用签名小程序吗

java - 如何让 EclipseLink MOXy 在基于 JAX-WS 的 Web 服务中的 WebLogic 中工作?

java - Android Firebase 同步检索数据和 "returning"