我在很长一段时间后开始使用MongoDB,但我无法编写代码来执行以下操作。
这里我想做的是从suspects和lawyers文档中执行查找,并将它们与suspects
字段中的字段合并。
现在,我只执行了一个查找操作,但无法将它与现有对象合并结合起来。
[
{
$unwind: "$suspects",
},
{
$lookup: {
from: "suspects",
let: {
suspectObjId: {
$toObjectId: "$suspects.id",
},
},
pipeline: [
{
$match: {
$expr: {
$eq: ["$_id", "$$suspectObjId"],
},
},
},
],
as: "suspects",
},
}
]
可疑文件:
[
{
"_id": ObjectId("64f8d65249432809cdc3cb37"),
"fullName": "John Doe -1",
"phoneNumber": "XXXXXXXXX",
"totalCriminalRecord": 3
},
{
"_id": ObjectId("64f8d6cd49432809cdc3cb38"),
"fullName": "John Doe -2",
"phoneNumber": "XXXXXXXXX",
"totalCriminalRecord": 5
}
],
律师文件:
[
{
"_id": ObjectId("64f8d58849432809cdc3cb34"),
"fullName": "John Doe -3",
"phoneNumber": "XXXXXXXXX",
"workAddress": "Address of .."
},
{
"_id": ObjectId("64f8d5f349432809cdc3cb35"),
"fullName": "John Doe -4",
"phoneNumber": "XXXXXXXXX",
"workAddress": "Address of .."
}
],
案例文档:
[
{
"_id": ObjectId("64f8d9f549432809cdc3cb3d"),
"crimeNumber": 12345,
"eventDate": "01/01/2023",
"suspects": [
{
"id": "64f8d65249432809cdc3cb37",
"note": "-- additional note --",
"lawyer": {
"id": "64f8d58849432809cdc3cb34",
"note": "--additional note --"
}
}
]
}
]
我希望它的结果如下:
{
"_id": ObjectId("64f8d9f549432809cdc3cb3d"),
"crimeNumber": 12345,
"eventDate": "01/01/2023",
"suspects": [
{
"id": "64f8d65249432809cdc3cb37",
"fullName": "John Doe -1",
"phoneNumber": "XXXXXXXXX",
"totalCriminalRecord": 3,
"note": "-- additional note --",
"lawyer": {
"id": "64f8d58849432809cdc3cb34",
"fullName": "John Doe -3",
"phoneNumber": "XXXXXXXXX",
"workAddress": "Address of ..",
"note": "--additional note --"
}
}
]
}
1条答案
按热度按时间l2osamch1#
你的方向是对的。只需执行
$lookup
来获取您需要的所有内容,然后使用$mergeObjects
来处理它们。Mongo Playground