如何计算嵌入式mongodb文档中的键数
Posted
技术标签:
【中文标题】如何计算嵌入式mongodb文档中的键数【英文标题】:how to count number of keys in embedded mongodb document 【发布时间】:2017-08-12 15:39:55 【问题描述】:我有一个 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"
,
,
我现在正在寻找的是给我clusterData
拥有多个密钥的帐户。
我只对列出具有 (2) 个或更多密钥的帐户感兴趣。
我试过这个:(但这不起作用)
db.collection_name.find('settings.clusterData.1': $exists: true, account : 1).pretty();
这可能与当前的数据结构有关吗?我没有重新设计此架构的选项。
【问题讨论】:
你看过***.com/questions/7811163/…吗? 【参考方案1】:您的 clusterData
字段不是数组,这就是为什么您不能只过滤它拥有的元素数量的原因。但是,有一种方法可以通过聚合框架获得您想要的东西。试试这个:
db.collection_name.aggregate(
$match:
"account" : "test1"
,
$project:
"settingsAsArraySize": $size: $objectToArray: "$settings.clusterData" ,
"settings.clusterData": 1
,
$match:
"settingsAsArraySize": $gt: 1
,
$project:
"_id": 0,
"settings.clusterData": 1
).pretty();
【讨论】:
以上是关于如何计算嵌入式mongodb文档中的键数的主要内容,如果未能解决你的问题,请参考以下文章