javascript - 如何使用 JavaScript 获得由 MongoDB 中 $in 运算符中使用的相同查询过滤的属性投影?
问题描述
我有这个文件
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])
[{
_id: xxxx,
id: A,
contacts: ['B']
},{
_id: xxxx,
id: B,
contacts: ['A']
},{
_id: xxxx,
id: D,
contacts: ['A', 'B']
}]
我尝试过聚合,结果相同。
非常感谢您提前。
解决方案
尝试从 MongoDB 4.4 开始的聚合投影运算符,
$filter
contacts
根据输入数组迭代数组循环和过滤
db.collection.find({ contacts: { $in: ["A", "B"] } },
{
_id: 0,
id: 1,
contacts: {
$filter: {
input: "$contacts",
cond: { $in: ["$$this", ["A", "B"]] }
}
}
})
推荐阅读
- c++ - 在 cout 语句中使用 cout 调用函数
- angular - ngx-malihu-scrollbar scrollTo 方法不起作用
- outlook - 带有无视图正文的 eml 文件
- api - LinkedIn:按 VanityName 查找个人资料 - 批准的开发人员
- html - 我的 CSS 没有显示我的背景图片
- uicollectionview - 如何在 swift 4 ios 中像新闻行情一样平滑滚动 collectionViewCell
- python-3.x - 如何锁定现有 Excel 工作表中的特定列?
- javascript - 在JS中解压numpy数组
- c# - 如何在 c# 中将两个参数传递给 GraphQLHttpClient?
- php - 限制 Wordpress 成员的评论页面