如何合并 mongodb 中的两个 collections,聚合 mongodb
How to merge two collections in mongodb, aggregate mongodb
我有 2 个 collection:
配置和要点
点 collection 有一个名称字段,用于存储配置 collection
的 ID
假设 collection 有一个要在其中搜索 objects 的数组,如何合并两个排序规则。
配置:
{
"find": true,
"points": [{
"image": true,
"brand": true,
"_id": {
"$oid": "61f0ad909535d94c98056e11"
},
"name": "ABC"
}, {
"image": true,
"brand": true,
"_id": {
"$oid": "61f0ade99535d94c98056e17"
},
"name": "Odido"
}]
}
分
{
"name": "61f0ad909535d94c98056e11",
"userID": "61c49f94a02ff82b484cc6d0",
enter code here
"create_date": {
"$date": "2022-01-27T02:53:52.473Z"
}
}
我想得到这个结果,嗯,或者类似的东西
{
"name": "61f0ad909535d94c98056e11",
"userID": "61c49f94a02ff82b484cc6d0",
"config_name": {
"image": true,
"brand": true,
"_id": {
"$oid": "61f0ad909535d94c98056e11"
},
"name": "ABC"
},
"create_date": {
"$date": "2022-01-27T02:53:52.473Z"
}
}
我正在尝试使用这样的查询
Points.aggregate([
{
$lookup: {
from: "configs",
localField: "name",
foreignField: "_id",
as: "configs",
},
},
]);
提前感谢您的帮助:)
db.points.aggregate([
{
$match: { "name": "61f0ad909535d94c98056e11" }
},
{
$set: { "name": { "$toObjectId": "$name" } }
},
{
$lookup: {
from: "configs",
localField: "name",
foreignField: "points._id",
as: "config_name"
}
},
{
$set: {
"config_name": {
"$first": {
"$filter": {
"input": { "$first": "$config_name.points" },
"as": "item",
"cond": { "$eq": [ "$name", "$$item._id" ] }
}
}
}
}
}
])
我有 2 个 collection: 配置和要点 点 collection 有一个名称字段,用于存储配置 collection
的 ID假设 collection 有一个要在其中搜索 objects 的数组,如何合并两个排序规则。
配置:
{
"find": true,
"points": [{
"image": true,
"brand": true,
"_id": {
"$oid": "61f0ad909535d94c98056e11"
},
"name": "ABC"
}, {
"image": true,
"brand": true,
"_id": {
"$oid": "61f0ade99535d94c98056e17"
},
"name": "Odido"
}]
}
分
{
"name": "61f0ad909535d94c98056e11",
"userID": "61c49f94a02ff82b484cc6d0",
enter code here
"create_date": {
"$date": "2022-01-27T02:53:52.473Z"
}
}
我想得到这个结果,嗯,或者类似的东西
{
"name": "61f0ad909535d94c98056e11",
"userID": "61c49f94a02ff82b484cc6d0",
"config_name": {
"image": true,
"brand": true,
"_id": {
"$oid": "61f0ad909535d94c98056e11"
},
"name": "ABC"
},
"create_date": {
"$date": "2022-01-27T02:53:52.473Z"
}
}
我正在尝试使用这样的查询
Points.aggregate([
{
$lookup: {
from: "configs",
localField: "name",
foreignField: "_id",
as: "configs",
},
},
]);
提前感谢您的帮助:)
db.points.aggregate([
{
$match: { "name": "61f0ad909535d94c98056e11" }
},
{
$set: { "name": { "$toObjectId": "$name" } }
},
{
$lookup: {
from: "configs",
localField: "name",
foreignField: "points._id",
as: "config_name"
}
},
{
$set: {
"config_name": {
"$first": {
"$filter": {
"input": { "$first": "$config_name.points" },
"as": "item",
"cond": { "$eq": [ "$name", "$$item._id" ] }
}
}
}
}
}
])