mongodb - 从 Mongo DB 嵌套数组中获取不同的值并输出到单个数组
问题描述
下面给出的是我在 mongo db 中的数据。我想从嵌套在 jnlc_subjects 索引下的字段文章中获取所有唯一 ID。结果应该只包含具有不同对象 ID 的文章数组。
Mongo Data
{
"_id" : ObjectId("5c9216f1a21a4a31e0c7fa56"),
"jnlc_journal_category" : "Biology",
"jnlc_subjects" : [
{
"subject" : "Conservation Biology",
"views" : "123",
"articles" : [
ObjectId("5c4e93d0135edb6812200d5f"),
ObjectId("5c4e9365135edb6a12200d60"),
ObjectId("5c4e93a8135edb6912200d61")
]
},
{
"subject" : "Micro Biology",
"views" : "20",
"articles" : [
ObjectId("5c4e9365135edb6a12200d60"),
ObjectId("5c4e93d0135edb6812200d5f"),
ObjectId("5c76323fbaaccf5e0bae7600"),
ObjectId("5ca33ce19d677bf780fc4995")
]
},
{
"subject" : "Marine Biology",
"views" : "8",
"articles" : [
ObjectId("5c4e93d0135edb6812200d5f")
]
}
]
}
所需结果
我想以以下格式获得输出
articles : [
ObjectId("5c4e9365135edb6a12200d60"),
ObjectId("5c4e93a8135edb6912200d61"),
ObjectId("5c76323fbaaccf5e0bae7600"),
ObjectId("5ca33ce19d677bf780fc4995"),
ObjectId("5c4e93d0135edb6812200d5f")
]
解决方案
尝试如下:
db.collection.aggregate([
{
$unwind: "$jnlc_subjects"
},
{
$unwind: "$jnlc_subjects.articles"
},
{ $group: {_id: null, uniqueValues: { $addToSet: "$jnlc_subjects.articles"}} }
])
结果:
{
"_id" : null,
"uniqueValues" : [
ObjectId("5ca33ce19d677bf780fc4995"),
ObjectId("5c4e9365135edb6a12200d60"),
ObjectId("5c4e93a8135edb6912200d61"),
ObjectId("5c4e93d0135edb6812200d5f"),
ObjectId("5c76323fbaaccf5e0bae7600")
]
}
推荐阅读
- python - 如何将 base64 转换为 TIFF 图像或 PNG 图像?
- android - android动画只有第一次点击才能工作
- jquery-ui - 打开新工具提示时关闭所有其他 jQueryUI 工具提示
- sql - 我需要向我的应用程序添加不属于 GROUPBY 语句的其他列
- asp.net-core-mvc - Aspnet Core - 当我使用 js 发送 Httpost 时出现错误 400
- javascript - 如何实时更新 v-data-table 数据?
- php - 添加数组的所有值并将其显示在数组中的问题
- python - Python - 使用 Adobe Illustrator 打开 .DXF 后 GeoPandas 无法工作
- python - 开发用于图像修改的编码器/解码器
- java - 在 GraphiQL 中显示 GraphQL 订阅结果