如果Mongodb文档在mongoose中包含数组中的元素,请查找它

时间:2014-04-07 10:29:01

标签: arrays node.js mongodb mongoose

如果我在mongodb文档中有一个包含数组的字段,例如:

"tags" : [  "tag", "etc1",  "etc2",  "etc3" ]

如果它包含元素'etc1',我有没有办法选择该文件?
如果我尝试使用查询:

db.coll.find({"tags" : { $elemMatch: { value0: 'etc1'} }})

但我需要知道数组中元素的位置,我不知道。
我也尝试过:

db.coll.find({"tags" : { $elemMatch: 'etc1' }})

但它必须是一个对象。有没有办法做到这一点?

NB我使用的是猫鼬,但我不确定如何构建查询

2 个答案:

答案 0 :(得分:4)

使用this questionthis other question中所述的$in运算符,如mongodb docs中所述,可以是accessed in mongoose

有了它,您将会看到类似这样的查询...... remembering that you must pass an array when using $in

db.coll.find({"tags" : { $in : ['etc1'] } } );

答案 1 :(得分:3)

除了使用$ in运算符之外,您还可以使用$ all运算符,如:

db.col1.find({"tags":{$all :["etc1"]}})