mongodb - 如何将所有子文档 _id 放入变量中
问题描述
我试图将家庭子文档 _ids 设置为变量。
这是我的架构:
families: [
{
_id: {
type: mongoose.Types.ObjectId
},
name: {
type: String
},
relation: {
type: String
}
}
]
问题是,我可以让父级的 _id 显示在变量内部,但是当我试图让家庭 _ids 显示undefined
在控制台日志中时。
将家庭子文档 _ids 放入变量的正确查询是什么?
解决方案
请试试这个:
db.yourCollection.aggregate([
{ $unwind: '$families' },
{ $project: { Ids: '$families._id' } }, { $group: { '_id': '$_id', subDocumentsIDs: { $push: '$Ids' } } }
])
输出:
/* 1 */
{
"_id" : ObjectId("5d58d3205a0d22d3c85d16f1"),
"subDocumentsIDs" : [
ObjectId("5d570b350e2fb4f72533d512"),
ObjectId("5d570b350e2fb4f71533d510"),
ObjectId("5d570b350e2fb4172533d511")
]
}
/* 2 */
{
"_id" : ObjectId("5d58d3105a0d22d3c85d1591"),
"subDocumentsIDs" : [
ObjectId("5d570b350e2fb4f72533d312"),
ObjectId("5d570b350e2fb4f71533d310"),
ObjectId("5d570b350e2fb4172533d311")
]
}
请将此视为一个基本示例,如果需要,请继续进行增强$unwind
,如果您的集合是大型数据集,则早期阶段会影响性能,但您可以通过使用$match
第一阶段轻松避免这种情况,正如您所说你可以得到 parent _id 然后用它$match
来过滤文档
推荐阅读
- c - 如何使用动态规划解决硬币排问题?
- php - 本地服务器无法使用 PHP 连接到远程 postgresql 数据库,但本地终端可以连接
- c++ - 将可变参数模板参数转换为 JSON 字符串
- linux - 如何确定在 Linux 上使用 Qt4 终止 QProcess 的信号?
- python - Python删除列表中的重复项
- html - 检索 web 元素父属性和值
- javascript - 我怎样才能停止我的脚本问同样的问题?
- python-3.x - 在抓取之前对数据进行重复数据删除
- r - R: 更新到 R4.0 后无法加载 Internet 例程
- c# - 部署时的 HTML 敏捷包 SocketException