,我是新来的MongoDB和需要完成我的任务帮助嵌入式阵列元素的数量:查找文件由符合条件
我使用MongoDB的查询为拍摄一个人就是行动。该行动是嵌入在个人文档中是这样的:
{
"_id" : ObjectId("56447ac0583d4871570041c3"),
"email" : "[email protected]",
"actions" : [
{
"name" : "support",
"created_at" : ISODate("2015-10-17T01:40:35.000Z"),
},
{
"name" : "hide",
"created_at" : ISODate("2015-10-16T01:40:35.000Z")
},
{
"name" : "support",
"created_at" : ISODate("2015-10-17T03:40:35.000Z"),
}
]
}
一个人可以有不同的动作名(support
和hide
仅有2例)的许多行动。
我知道,我能找到的所有的人至少有一个support
动作是这样的:
db.test.find({'actions.name':'support'})
我想要做的,就是检索所有的人至少有X support
行动。这可能不使用JavaScript语法?随着人们可能有数百个动作,这将是缓慢的。
所以,如果我想至少有2个support
行动的所有人,我所知道的唯一的方法就是使用js的语法:
db.test.find({$where: function() {
return this.actions.filter(function(action){
return action.name = 'support';
}).length >= 2;
}});
是否有其他/更好/更快此查询的可能性?
不,这不是OP想要的。 – styvane
@ user3100115你为什么认为它不是OP想要的? –
运行他的查询并将结果与您的结果进行比较,然后您将理解“为什么”。另外问题是非常明确 – styvane