【发布时间】:2018-08-22 14:22:23
【问题描述】:
我有两个集合,如下所示。
集合 1:列表
{
"_id" : ObjectId("5b618589d6edcc135c1aee0a"),
"name" : "ABC",
"special" : "Golmal",
"dim" : "2122",
}
集合 2:数据
文档 1:
{
"_id" : ObjectId("5b6023d9589ff6bfb5dd75d7"),
"date" : "2018/08/13",
"special" : "Golmal",
}
文档 2:
{
"_id" : ObjectId("5b602447589ff6bfb5dd7606"),
"date" : "2018/08/13",
"special" : "Godman",
}
在这里我想比较两个集合,如果集合 1 的 "special":"Golmal" 存在于集合 2 文档中,我想显示/获取集合 1 文档中的所有相关日期。
我试过aggregate & $lookup 如下
getAvailableList(): Promise<any> {
return this._mongoUtility.Db
.then(db => {
let list= db.collection('list');
let data= db.collection('data');
list.aggregate([{$lookup:
{
from: data,
localField: "special",
foreignField: "special",
as: "matches"
}
},
{
$match: { "matches": { $ne: [{}] } }
}
]);
return Promise.resolve();
})
.catch(err => {
return Promise.reject({message: 'Not found', err: err});
});
}
但我得到了空值。
我也使用.find & forEach 绑定如下
let abc = [];
list.find({}).toArray()
.then(arr => {
arr.forEach(obj1 => {
data.find({special: obj1.special}).toArray()
.then(secondArr => {
console.log(secondArr);
if (secondArr.length > 0) {
abc.push(obj1);
}
});
});
});
return Promise.resolve();
但没有结果。我需要 JSON 格式的值。由于 MongoDB 没有连接。有什么办法破解吗?
【问题讨论】:
-
localField 和 foreignField 应该是两个集合的
special -
那是个错误。我更新了。
标签: arrays json node.js mongodb