【问题标题】:Fetch document by passing array of objects in mongoose通过在猫鼬中传递对象数组来获取文档
【发布时间】:2016-07-26 15:00:38
【问题描述】:

我们如何通过在 node js 服务器中传递对象数组从 mongo db 集合中获取文档。例如,

var arr = [
     { "name": "ABC", "location": "NY"},
     { "name": "CDE", "location": "LA"},
     { "name": "EFG", "location": "NZ"}
];

这里,目标是获取所有满足这个名称和位置组合的文档。

【问题讨论】:

标签: angularjs node.js mongodb mongoose


【解决方案1】:

鉴于您指定的数组,您实际上可以只在 $or 查询中使用该数组(假设是 Mongoose),它会查找满足这 3 个条件之一的文档:

var arr = [
    { "name": "ABC", "location": "NY"},
    { "name": "CDE", "location": "LA"},
    { "name": "EFG", "location": "NZ"}
];

Model.find({$or: arr}, function(err, docs) {
      // do something with docs, docs are the documents returned from the query
});

Model 是您正在使用的集合的模型/模式。

【讨论】:

  • 不,它不返回数据。如果集合中不存在任何一个对象,那么我们也可以获得结果。但是 $or 返回我一个空数组
  • 你能举个例子来说明你上面所说的吗?我认为我不太了解您要做什么。我给出的答案将返回满足其中一个条件的文件,这是你想要的吗?
  • 是的,我正在尝试从 itemName、itemRef、itemCategory、itemSpecification 匹配的商店集合中获取商店详细信息。如示例中所述,我的传递有效负载位于数组中。
  • 原始传递的有效载荷是,选项:[ { ref: '5794db53a7dd0eb45311e8d5', item: 'File',uom: 'Piece', specification: 'Clear Folder File A4',category: 'Office' } , { ref: '5794db3ba7dd0eb45311e8cb', item: 'Letter Tray', uom: 'Piece', 规格: 'ALFAX', 类别: 'Office' }, { ref: '5794d705a7dd0eb45311e882', item: 'GPS Tracking Device', uom :'Piece',规格:'T333 E-Meitrack',类别:'项目'}]
  • 您确定您的文档中包含所有这些密钥吗?您的“ref”键看起来像将存储为 _id as ObjectId('5794db53a7dd0eb45311e8d5')
【解决方案2】:

这是针对您的查询的建议解决方案。

var filter = {
      $or: arr
}
db.coolection.find(filter, function(err, docs){
      //your functionality
});

这会有所帮助。

【讨论】:

    猜你喜欢
    • 2012-08-26
    • 2022-08-18
    • 2019-10-06
    • 2017-05-26
    • 2017-04-18
    • 1970-01-01
    • 1970-01-01
    • 2020-07-31
    • 1970-01-01
    相关资源
    最近更新 更多