您好,我正在尝试加入不同集合中的文档
$lookup: {
from: 'operation',
localField: 'operations._id',
foreignField: '_id',
as: 'string'
}
我尝试了一切,但没有任何效果,我希望通过 id 连接来进行所有操作。
您好,我正在尝试加入不同集合中的文档
$lookup: {
from: 'operation',
localField: 'operations._id',
foreignField: '_id',
as: 'string'
}
我尝试了一切,但没有任何效果,我希望通过 id 连接来进行所有操作。
你只需要更换
localField: 'operations._id'
和:
localField: 'operations.$id',
这是我尝试过的:
插入一些操作:
db.insert.Operation([
{
operationName: "test",
data: [1, 2, 3],
},
{
operationName: "xx",
data: [4, 5, 6],
},
{
operationName: "AA",
data: [7, 8, 9],
},
{
operationName: "CCC",
data: [10, 11, 12],
},
{
operationName: "PPP",
data: [13, 14, 15],
},
{
operationName: "IIII",
data: [16, 17, 18],
},
]);
插入第一个文档,我调用了集合Employee:
db.insert.Employee([
{
firstName: "chuck",
ladtName: "Norris",
enabled: true,
operations: [
{
$ref: "Operations",
$id: ObjectId("6044ebeede8ee738e720d3a5"),
},
{
$ref: "Operations",
$id: ObjectId("6044ebeede8ee738e720d3a6"),
},
{
$ref: "Operations",
$id: ObjectId("6044ebeede8ee738e720d3a8"),
},
{
$ref: "Operations",
$id: ObjectId("6044ebeede8ee738e720d3a9"),
},
{
$ref: "Operations",
$id: ObjectId("6044ebeede8ee738e720d3aa"),
},
],
},
]);
我写了这个查询:
db.Employee.aggregate([{
$lookup:{
from:"Operation",
localField:"operations.$id",
foreignField:"_id",
as:"Result"
}
}])
这就是它的全部。
结果如下:
{
"_id" : ObjectId("6044eee6de8ee738e720d3ab"),
"firstName" : "chuck",
"ladtName" : "Norris",
"enabled" : true,
"operations" : [
DBRef("Operations", ObjectId("6044ebeede8ee738e720d3a5")),
DBRef("Operations", ObjectId("6044ebeede8ee738e720d3a6")),
DBRef("Operations", ObjectId("6044ebeede8ee738e720d3a8")),
DBRef("Operations", ObjectId("6044ebeede8ee738e720d3a9")),
DBRef("Operations", ObjectId("6044ebeede8ee738e720d3aa"))
],
"Result" : [
{
"_id" : ObjectId("6044ebeede8ee738e720d3a5"),
"operationName" : "test",
"data" : [
1.0,
2.0,
3.0
]
},
{
"_id" : ObjectId("6044ebeede8ee738e720d3a6"),
"operationName" : "xx",
"data" : [
4.0,
5.0,
6.0
]
},
{
"_id" : ObjectId("6044ebeede8ee738e720d3a8"),
"operationName" : "CCC",
"data" : [
10.0,
11.0,
12.0
]
},
{
"_id" : ObjectId("6044ebeede8ee738e720d3a9"),
"operationName" : "PPP",
"data" : [
13.0,
14.0,
15.0
]
},
{
"_id" : ObjectId("6044ebeede8ee738e720d3aa"),
"operationName" : "IIII",
"data" : [
16.0,
17.0,
18.0
]
}
]
}