Mongoose:如何从对象数组中查找多个字段

Posted

技术标签:

【中文标题】Mongoose:如何从对象数组中查找多个字段【英文标题】:Mongoose: How to find by multiple fields from an array of objects 【发布时间】:2015-12-21 10:09:09 【问题描述】:

假设我有一个看起来像这样的模型:

 name: String, category: String 

我得到了一个包含如下对象的数组:

var array = [
     name: "a", category: "A" 
  ,  name: "b, category: "A" 
  ,  name: "b", category: "B" 
]

现在我想查找与数组中的值对匹配的所有对象。如果它只是一个字符串数组,代码将类似于Model.find( name: $in: array ),但我需要类似

Model.find( name,category: $in: array )

这可能吗?

【问题讨论】:

【参考方案1】:

您可以在 $or 查询中直接使用该数组来查找与这些对中的任何一个匹配的文档:

var array = [
     name: "a", category: "A" 
  ,  name: "b", category: "A" 
  ,  name: "b", category: "B" 
];

Model.find($or: array, function(err, docs)  ... );

【讨论】:

或使用猫鼬的.or helper - Model.find().or(array) 我怎么没想到呢?非常感谢!

以上是关于Mongoose:如何从对象数组中查找多个字段的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 $push (Mongoose) 在数组中推送多个对象

使用 mongoose 在对象数组中查找键

如果不存在,Mongoose 将多个对象添加到数组

如何在猫鼬中将对象字段作为数组获取?

如果不存在,Mongoose会将多个对象添加到数组中

Mongoose - 如何从数组元素中删除对象[重复]