我陷入了mongoose查询。我有一个id数组作为输入,我想在数据库中搜索该数组的id以匹配元素。在$in
查询中使用find
后,它会返回完美的结果。
现在,我想从数据库中找不到的数组中获取ID。最好的方法是什么?
请尝试发表评论。
Template.find({
_ids : [
"as6d87as67da7s8d87a87", // available in database
"as6dasd8sa9d8a9a9s8d7", // not-available in database
"6756asd5as6dsadghasd3", // available in database
]
}, function(err, result){
// Need result as "as6dasd8sa9d8a9a9s8d7", which is not matched. or in object.
// Can we do with `aggregate` query?
});
答案 0 :(得分:1)
我认为这就是你想要的东西
var _ids = [
"as6d87as67da7s8d87a87",
"as6dasd8sa9d8a9a9s8d7",
"6756asd5as6dsadghasd3"
];
Template.find({
_ids : _ids
}, function(err, result){
var filteredResult = _ids.filter(currentId => !result.some(item => item._id.toString() == currentId));
});
答案 1 :(得分:0)
大卫的回答将起作用。这里的想法是将_ids数组与结果中的_ids进行比较,并返回缺少的数组。添加更多代码仅用于理解目的:
比较_ids和新数组以返回缺少的元素
var resIDs = new Array();
for (var i = 0; i < result.length; i++) {
resIDs.push(result[i]._id.toString());
}
var resultFiltered =
_ids.filter(function (v) {
return !resIDs.includes(v.toString());
})