这是建筑样本集。
{
_id: 5e4aa096a6b7db2270c65815,
previous_audit: false,
no_of_people: 3,
project_name: 'UNDP',
premise_contact: 'Kanagaraj',
premise_address: 'Delhi',
premise_city: 'Delhi',
premise_state: 'Delhi',
premise_country: 'IN',
latitude: '28.593716',
longitude: '77.222391',
building_name: 'Nemi',
building_type: 'Hospital',
climate_zone: 'Hot & Dry',
no_of_stories: '3',
year_of_occupation: 3,
gross_area: 3333,
gross_area_units: 'Square Meters',
lease_type: 'Annual Rental',
campus_id: 5e4857816560b92a58129e68,
project_name_lower: 'undp',
createdAt: 2020-02-17T14:17:58.892Z,
updatedAt: 2020-02-17T14:17:58.892Z,
__v: 0,
}
在第一个管道阶段,我正在使用$ match函数。
Building.aggregate([
{
$match: {
campus_id: {
$in: campus_ids
}
}
},
{
$lookup: {
from: 'manual_meters',
localField: '_id',
foreignField: 'building_name',
as: 'manual_meter'
}
}
])
但是当查找时,它总是在manual_meter中返回空arryay。这是我得到的回应。尽管收集手动计量表包含建筑物的ID,但仍不返回手动计量表收集。
{
_id: 5e4857816560b92a58129e72,
previous_audit: false,
project_name: 'UNDP',
premise_contact: 'Kanagaraj',
premise_address: 'Delhi',
premise_city: 'Delhi',
premise_state: 'Delhi',
premise_country: 'IN',
latitude: '28.593716',
longitude: '77.222391',
building_name: 'U.N.House',
building_type: 'Office',
climate_zone: 'Hot & Dry',
no_of_stories: '4',
year_of_occupation: 1970,
gross_area: 6500,
gross_area_units: 'Square Meters',
lease_type: 'Owned',
campus_id: 5e4857816560b92a58129e68,
project_name_lower: 'undp',
createdAt: 2020-02-15T20:41:37.171Z,
updatedAt: 2020-02-15T20:41:37.171Z,
__v: 0,
manual_meter: []
},
{
_id: 5e4aa096a6b7db2270c65815,
previous_audit: false,
no_of_people: 3,
project_name: 'UNDP',
premise_contact: 'Kanagaraj',
premise_address: 'Delhi',
premise_city: 'Delhi',
premise_state: 'Delhi',
premise_country: 'IN',
latitude: '28.593716',
longitude: '77.222391',
building_name: 'Nemi',
building_type: 'Hospital',
climate_zone: 'Hot & Dry',
no_of_stories: '3',
year_of_occupation: 3,
gross_area: 3333,
gross_area_units: 'Square Meters',
lease_type: 'Annual Rental',
campus_id: 5e4857816560b92a58129e68,
project_name_lower: 'undp',
createdAt: 2020-02-17T14:17:58.892Z,
updatedAt: 2020-02-17T14:17:58.892Z,
__v: 0,
manual_meter: []
}
]
以下是样本manual_meter集合。
{"_id":"5e4ad8e1a3833e2bb44b4dcb",
"meter_data : [],
"meter_name":"undp_unh",
"meter_id":"1001",
"meter_type":"energy",
"campus_name":"UNDP",
"building_name":"5e4857816560b92a58129e72",
"floor_name":"common",
"zone_name":"common",
"createdAt":"2020-02-17T18:18:09.192Z",
"updatedAt":"2020-02-17T18:18:09.192Z",
"__v":0}
它看起来像你想的比赛string
对ObjectId
哪个都不行,即使值是相同的。您可以将$ toString_id
作为$ lookup的一部分在您的字段上运行:
{
$lookup: {
from: "manual_meters",
let: { building_id: { $toString: "$_id" } },
pipeline: [
{
$match:{
$expr: {
$eq: [ "$$building_id", "$building_name" ]
}
}
}
],
as: "manual_meter"
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句