检查数组中没有$ in的值

时间:2012-10-19 18:56:17

标签: node.js mongodb express mongoose

假设我有以下文件:

{
  title: 'Some title',
  items: [1,5,9,4]
}

{
  title: 'Some title',
  items: [5,7]
}

{
   title: 'Some title',
   items: [1,2]
}

我需要获取项目有5的文档。所以我在mongoose中进行以下查询:

Model.find({items: {$in: [5]}}, function (err, docs) {
   // docs.length == 2
});

我得到了它。但我发现,如果我进行以下查询,那么我会得到相同的结果:

Model.find({items: 5}, function (err, docs){
   // docs.length == 2
});

在我的案例中使用第二种方法查找文档是否正确?

1 个答案:

答案 0 :(得分:2)

如果要查找$in包含任何一组值的文档,请使用items;如果您希望items包含特定值的文档,请使用{items: 5}之类的简单查询对象。

因此,正如您所发现的,您可以使用$in来匹配单个值,它更自然地表达为Model.find({items: 5}, ...);