次のクエリで同じコレクションの結果が必要な場合、ネストされたクエリをどのように実行しますか?
var mongo = require('../config/mongo');
var mongoDB = mongo.db;
...
exports.myFunction = function(req, res) {
...
...
// e.g. myArray = ['a','b','c'];
mongoDB.collection('MyCollection', function(err, collection) {
collection.find({ $or: [{ 'source': {$in: myArray} },{ 'target': {$in: myArray} }]}, { "someVar": 0}).toArray(function(err, firstResults) {
var allResults = [];
for (var i = 0; i < firstResults.length; i++) {
allResults[firstResults[i].source]=1;
allResults[firstResults[i].target]=1;
};
var secondResults = Object.keys(allResults);
mongoDB.collection('MyCollection', function(err, collection) {
collection.find({ $or: [{ 'source': {$in: secondResults} },{ 'target': {$in: secondResults} }]}, { "someVar": 0}).toArray(function(err, items) {
res.send(items);
});
});
});
});
しかし、同じコレクション 'MyCollection' を 2 回呼び出すのは好きではありません。ソースまたはターゲットに secondResults が含まれるドキュメントを取得しようとしています。