【发布时间】:2020-03-16 12:12:04
【问题描述】:
最终目标是为每个 pathway 对象在 partners 列表中添加一个新合作伙伴(如果它们尚不存在)。如果pathway_name 不等于Engagement Team。
例如,我想添加以下合作伙伴:
{
"_id" : ObjectId("5dd5762be13e15a73f042ce5"),
"partner" : ObjectId("5dd57633bf0cbbbb36bc112f")
}
"pathways" : [
{
"_id" : ObjectId("5d837689b57cc711487f1cf0"),
"pathway_name" : "Electronics Technology with Advanced Manufacturing Mechatronics",
"partners" : [
{
"_id" : ObjectId("5d837ab8b57cc711487f1d28"),
"partner" : ObjectId("5d837426b57cc711487f1c96")
}
]
},
{
"_id" : ObjectId("5d837694b57cc711487f1cf1"),
"pathway_name" : "Pre-Mechanical Engineering",
"partners" : [
{
"_id" : ObjectId("5d837acfb57cc711487f1d29"),
"partner" : ObjectId("5d837421b57cc711487f1c92")
}
]
},
{
"_id" : ObjectId("5da6055da0eb361cc8da26dc"),
"pathway_name" : "Engagement Team",
"partners" : [
{
"_id" : ObjectId("5da60711a0eb361cc8da26f0"),
"partner" : ObjectId("5d83749fb57cc711487f1cc2")
}
]
}
],
我当前的查询如下,我不知道如何添加仅基于 partner 字段本身而不是合作伙伴对象的 _id 字段不存在的合作伙伴的逻辑.
db.getCollection("schools").updateMany({}, $addToSet:{"pathways$[].partners"})
预期结果:
"pathways" : [
{
"_id" : ObjectId("5d837689b57cc711487f1cf0"),
"pathway_name" : "Electronics Technology with Advanced Manufacturing Mechatronics",
"partners" : [
{
"_id" : ObjectId("5d837ab8b57cc711487f1d28"),
"partner" : ObjectId("5d837426b57cc711487f1c96")
},
{
"_id" : ObjectId("5dd5762be13e15a73f042ce5"),
"partner" : ObjectId("5dd57633bf0cbbbb36bc112f")
}
]
},
{
"_id" : ObjectId("5d837694b57cc711487f1cf1"),
"pathway_name" : "Pre-Mechanical Engineering",
"partners" : [
{
"_id" : ObjectId("5d837acfb57cc711487f1d29"),
"partner" : ObjectId("5d837421b57cc711487f1c92")
},
{
"_id" : ObjectId("5dd5762be13e15a73f042ce5"),
"partner" : ObjectId("5dd57633bf0cbbbb36bc112f")
}
]
},
{
"_id" : ObjectId("5da6055da0eb361cc8da26dc"),
"pathway_name" : "Engagement Team",
"partners" : [
{
"_id" : ObjectId("5da60711a0eb361cc8da26f0"),
"partner" : ObjectId("5d83749fb57cc711487f1cc2")
}
]
}
],
【问题讨论】:
-
它是否有效或仍有问题?
-
它确实 =],接受。
标签: mongodb