我正在研究MEAN堆栈应用程序。在我的项目中有一个表单,其中有七个字段.7个字段中有3个来自dept集合,4个来自用户集合。当我们只搜索一个字段时,然后没有问题。但是当我们从不同的集合中分别找到两个文本字段时,它会显示不正确的数据。我们知道在mongo db中没有连接操作。我们如何加入两个集合? 请帮我!!! 让我们假设,这些是我形式的七个领域。
单位名称: 卖方名称: 码: 客户号码: 地址: 状态 taxid:
在上面的列表中,单位名称,卖家名称和代码来自办公室集合。客户编号,地址,状态,出租车来自数据收集。 现在我正在尝试搜索状态为“active”的单位名称。所以,现在我正在尝试从办公室集合中搜索,然后在数据收集中使用id。
请告诉我如何在mongodb中执行join。如何在mongodb中执行join操作。
if (string.$and.length > 0) {
office.find(string).exec(function(err, office) {
if (err) {
return next(err);
} else {
for (var i = 0; i < office.length; i++) {
ids.push(office[i]._id);
}
string.$and.push({
$or: [{
data_id: {
"$in": ids
}
}
}]
});
if (string1.$and.length > 0) {
data.find(string).populate('data_id').exec(function(err, data) {
if (err) {
return next(err);
} else {
res.json(data);
}
});
} else {
data.find({
$or: [{
data_id: {
"$in": ids
}
}, {
data_nu: {
"$in": data_nu
}
}]
}).populate('data_id').exec(function(err, data) {
if (err) {
return next(err);
} else {
res.json(data_id);
}
});
}
}
});
} else {
data.find(string).exec(function(err, data) {
if (err) {
console.log(err);
return next(err);
} else {
for (var i = 0; i < data.length; i++) {
ids.push(data[i].data_id);
data_nu.push(data[i].data_nu);
}
if (string.$and.length > 0) {
office.find({
$and: [{
$or: [{
id: {
"$in": ids
}
}, {
data_nu: {
"$in": data_nu
}
}]
}, string]
}).populate('dataId').exec(function(err, datad) {
if (err) {
return next(err);
} else {
res.json(datad);
}
});
} else {
datad.find({
$or: [{
id: {
"$in": ids
}
}, {
data_nu: {
"$in": data_nu
}
}]
}).populate('dataId').exec(function(err, datad) {
if (err) {
return next(err);
} else {
res.json(datad);
}
});
}
}
});
}
答案 0 :(得分:0)
mongoDB更喜欢有关一个主题的所有信息都在一个集合中。正如你所说,mongoDB中没有任何加入, 尝试在MongoDB中加入会破坏使用MongoDB的目的。您可以使用DBref并编写应用程序级代码(或库),以便它自动为您提取这些引用。
或者您可以更改架构并使用embedded documents。
您最后的选择是完全按照现在的方式保留事物并进行两次查询。