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

Gob*_*Gob 2 arrays mongoose

假设我有一个如下所示的模型:

{ name: String, category: String }
Run Code Online (Sandbox Code Playgroud)

我得到了一个包含这样的对象的数组:

var array = [{
    { name: "a", category: "A" }
  , { name: "b, category: "A" }
  , { name: "b", category: "B" }
}]
Run Code Online (Sandbox Code Playgroud)

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

Model.find({ name,category: {$in: array} })
Run Code Online (Sandbox Code Playgroud)

这可能吗?

Joh*_*yHK 5

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

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

Model.find({$or: array}, function(err, docs) { ... });
Run Code Online (Sandbox Code Playgroud)

  • 或使用 mongoose 的 `.or` 助手 - `Model.find().or(array)` (2认同)