mongoose发现不匹配来自数组传递的id

我卡在mongoose的查询。 我有一个ID数组作为input,我想在数据库中search匹配元素的ID数组。 它在使用$in 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? }); 

我认为这使得你想要的

  var _ids = [ "as6d87as67da7s8d87a87", "as6dasd8sa9d8a9a9s8d7", "6756asd5as6dsadghasd3" ]; Template.find({ _ids : _ids }, function(err, result){ var filteredResult = _ids.filter(currentId => !result.some(item => item._id.toString() == currentId)); }); 

大卫的答复将工作。 这里的想法是比较结果中的_ids数组和_ids,并返回缺less的数组。 添加更多代码仅用于理解目的:

  1. 将结果的_id推入一个新的数组
  2. 比较_ids和新的数组以返回缺less的元素

     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()); })