如何使用JavaScript获得MongoDB中$in操作符中使用的相同查询过滤的属性投影?
我有这些文件如何使用JavaScript获得MongoDB中$in操作符中使用的相同查询过滤的属性投影?,javascript,mongodb,Javascript,Mongodb,我有这些文件 User A: {_id: xxxx, id: A, contacts: ['B', 'C'] } User B: { _id: xxxx, id: B, contacts: ['A', 'D'] } User C: { _id: xxxx, id: C, contacts: ['D'] } User D: { _id: xxxx, id: D, contacts: ['A', 'B'] } 我当前的代码: Us
User A: {_id: xxxx, id: A, contacts: ['B', 'C'] }
User B: { _id: xxxx, id: B, contacts: ['A', 'D'] }
User C: { _id: xxxx, id: C, contacts: ['D'] }
User D: { _id: xxxx, id: D, contacts: ['A', 'B'] }
我当前的代码:
User.find({contacts: { $in: ['A', 'B']}}, { _id: 0, id: 1, contacts: 1})
结果:
[{
_id: xxxx,
id: A,
contacts: ['B', 'C']
},{
_id: xxxx,
id: B,
contacts: ['A', 'D']
},{
_id: xxxx,
id: D,
contacts: ['A', 'B']
}]
预期结果:(我只希望属性联系人按查询数组-->进行筛选,在本例中,[A,B])
我尝试过聚合,但结果相同
非常感谢。请尝试从MongoDB 4.4开始的聚合投影操作符
迭代$filter
数组,并根据输入数组进行筛选联系人的循环
[{
_id: xxxx,
id: A,
contacts: ['B']
},{
_id: xxxx,
id: B,
contacts: ['A']
},{
_id: xxxx,
id: D,
contacts: ['A', 'B']
}]
db.collection.find({ contacts: { $in: ["A", "B"] } },
{
_id: 0,
id: 1,
contacts: {
$filter: {
input: "$contacts",
cond: { $in: ["$$this", ["A", "B"]] }
}
}
})