所以我的收藏是这样的:
[
{"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({ ?? })
感谢。
答案 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]中获取两个元素。