基于对象属性查询Mongoose文档

时间:2015-05-26 21:11:20

标签: arrays node.js mongodb mongoose

我有以下Mongoose Schema:

var UserSchema = new Schema({
  name: String,
  age: Number,
  ...
  tags: [{
    text: String,
    ...
  }]
});

和以下数组:

var tagTexts = ['tall', 'small', 'green', 'blue'];

我想检索包含至少一个带有tagTexts中找到的文本属性的标记的所有用户文档。

例如,如果我有以下用户和tagTexts数组

[{
  name: 'Bob',
  age: 17,
  ...
  tags: [{
    text: 'small',
    ...
  }]
}, {
  name: 'Bill',
  age: 29,
  ...
  tags: [{
    text: 'dandelion',
    ...
  }, {
    text: 'oak',
    ...
  }]
}]

var tagTexts = ['tall', 'small', 'green', 'blue'];
然后鲍勃会被检索,但不是比尔。

1 个答案:

答案 0 :(得分:4)

您可以使用$in来匹配值数组,并使用点符号来定位text数组的每个元素中的tags字段。任何匹配都会导致文档包含在结果中。

var tagTexts = ['tall', 'small', 'green', 'blue'];
User.find({'tags.text': {$in: tagTexts}}, function(err, users) {...});