基本上我有一个类似于这个的模式
User_A {
a_array: [{
b: { type: Schema.Types.ObjectId, ref: 'User_B' }
}]
}
User_B {
b_name:String
}
我需要做的是计算a_array中有多少不同的User_As
具有特定的b
。我不需要填充b
所以我认为我可以通过这种方式查询User_A
架构来过滤并查找只有b
User_A.find({'a_array.b': my_user_b._id})
.exec(function (err, result) {
})
前提是a_array.b
元素是填充之前引用项的_id
。
但我不能让它工作,总是返回一个空数组,即使我确定my_user_b._id
是正确的。
有没有办法实现这一目标。
答案 0 :(得分:0)
问题出在'a_array.b'
。因为a_array
是一个数组,所以无法获得所需的结果。试试这个。
User_A.find({
a_array: {$elemMatch: {b: my_user_b._id}}
}, function (err, result) {
});
这可以为您提供a_array.b
为my_user_b._id
的所有 User_A 记录。