在数组中查找值

时间:2017-02-23 00:08:05

标签: mongodb mongodb-query

所以我的收藏是这样的:

[
    {"name": "one", "jobs": ["1","2","3","4","5"]},
    {"name": "two", "jobs": ["6","7","8","9","10"]},
    {"name": "three", "jobs": ["11","12","13","14","15"]},
]

我想创建一个查询,根据jobs的值查找名称。因此,如果jobs=2,则名称应为one;如果jobs=9,则名称应为two;如果jobs=13,则名称应为three。我把什么放进去了 db.collection.find({ ?? })

感谢。

2 个答案:

答案 0 :(得分:2)

你可以尝试这样的事情。

以下查询将选择jobs数组中包含值为"3"的元素的所有行,并投影name字段。

db.collection.find({jobs:"3"},{name:1})

更多https://docs.mongodb.com/manual/reference/operator/query/eq/#array-element-equals-a-value

答案 1 :(得分:1)

只是补充其他答案,如果你想从一系列工作中搜索,你可以做类似的事情:

db.collection.find({jobs:{$in:["13","14"]}},{name:1})

如果要获得此数组的切片,可以使用切片运算符。它需要两个参数:第一个是初始索引,第二个是此索引后的元素数。这是一个例子:

db.tasks.find({jobs:{$in:["13","14"]}},{name:1,jobs:{$slice : [0,2]}})

这将从数组的索引[0]中获取两个元素。