如何解决如何在mongodb中使用聚合合并两个对象?
我在合并对象时遇到麻烦,我有一个工厂模式,其中包含一个汽车属性,其中包含每辆汽车的引用,我想将工厂与最近注册的汽车合并。我有以下数据。
"Factory": {
_id: ""
"factories" : [
{
"Adress" : "...","name": "Factory A"
"car": [ ObjectId("5f974ac1200b1aa93fee248b") ]
},{
"Adress" : "...","name": "Factory B"
"car": [ ObjectId("5f974ac1200b1aa93fee248b") ]
}
],},
汽车收藏:
"Car" :
_id: ObjectId("5f974ac1200b1aa93fee248b")
"color" : "...","feature": "..."
},
我期望的输出:
[
{
"Factory A": {
"Adress" : "...","name": "Factory A"
"cars": {
_id: ObjectId("5f974ac1200b1aa93fee248b")
"color" : "...","feature": "..."
}
},"Factory B": {
"Adress" : "...","name": "Factory B"
"car": {
_id: ObjectId("5f974ac1200b1aa93fee248b")
"color" : "...",}
]
我得到的输出:
"Factory A": {
{
"Adress" : "...","name": "Factory A","car": [ ObjectId("5f974ac1200b1aa93fee248b") ]
},"car": {
_id: ObjectId("5f974ac1200b1aa93fee248b")
"color" : "...","feature": "..."
}
}
"Factory B": {
{
"Adress" : "...","name": "Factory B","feature": "..."
}
}
这是我的操作
db.getCollection('factory').aggregate([
{ $match: { "_id": ObjectId("5f9740f38591d84413600db0") } },{ $unwind: "$factories"},{ $group: { _id: null,allFactories: { $addToSet: "$factories"} } },{ $unwind: "$allFactories" },{
$lookup: {
from: "cars",localField: "allFactories.car",foreignField: "_id",as: "cars"
}
},{ $sort: { "cars._id": -1 } },{ $unwind: "$cars" },{ $group: {_id:"$allFactories.name",lastMatch: { $last: "$$ROOT"} }}
对这种方法有什么帮助吗?
解决方法
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。