如何在 MongoDb 的嵌入式数组中查找多个元素
Posted
技术标签:
【中文标题】如何在 MongoDb 的嵌入式数组中查找多个元素【英文标题】:How to look for more than one element in an embedded array in MongoDb 【发布时间】:2017-08-09 14:17:49 【问题描述】:我有一个mongodb
查询:(在 account='test' 处给我设置)
db.collection_name.find("account" : "test1", settings : 1).pretty();
我得到以下输出:
"_id" : ObjectId("49830ede4bz08bc0b495f123"),
"settings" :
"clusterData" :
"us-south-1" : "cluster1",
"us-east-1" : "cluster2"
,
,
我现在正在寻找的是给我account
,其中clusterData
在其数组中有多个元素。
我只对列出具有 (2) 个或更多元素的帐户感兴趣。
我试过这个:
db.collection_name.find('settings.clusterData.1': $exists: true, account : 1).pretty();
它没有返回任何结果。我的查询正确吗?还有其他方法吗?
【问题讨论】:
【参考方案1】:它不起作用的原因是您的clusterdata
是一个对象,而不是一个数组。我建议将您的数据更改为具有如下两个属性的集群数组,然后它将起作用。
"_id" : ObjectId("49830ede4bz08bc0b495f123"),
"settings" :
"clusterData" : [
name : "cluster1",
location : "us-south-1"
,
name : "cluster2",
location : "us-east-1"
]
【讨论】:
感谢您的意见。但是,我没有将其更改为数组的选项。我将数据作为对象。谢谢。 @noober 那我不认为你问的是可能的。你的选择是获取文档并计算键,将文档修改为数组,修改文档以存储数量键或通过键名查询键是否存在。以上是关于如何在 MongoDb 的嵌入式数组中查找多个元素的主要内容,如果未能解决你的问题,请参考以下文章