2017-02-23 88 views
0

值那么我的收藏是一样的东西:查找阵列

[ 
    {"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({ ?? })

感谢。

回答

1

只是补充对方的回答,如果你从一系列的工作想搜索,你可以这样做:如果你想获得一个

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

切片这个数组,你可以使用切片运算符。它有两个参数:第一个是初始索引,第二个是该索引之后的元素数。下面是一个例子:

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

这将需要元件从该阵列的索引[0]。

+0

这不起作用。该名称不被返回。如果我想要返回工作号码,我该怎么办?谢谢。 – Somename

+0

你确定你运行正确的代码? {name:1}意味着放这个名字。如果你想返回的名称和所有的工作,你可以做的查询,而第二部分,比如'db.collection.find({工作:{$中:“1”,“2”]}})'或添加作业到投影'db.collection.find({...},{名称:1,作业:1})' –

+0

感谢。我正在制作一个类型。谢谢。我现在可以获得所有的价值。 – Somename

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

+0

这工作。但是如果我想找到2个名字呢?我尝试过'{jobs:“2”||工作:“9”}'。谢谢。另外,如果我想从该值返回所有内容,不仅仅是“名称”,我该怎么做? MySQ相当于'SELECT *' – Somename

+1

不客气。对于第一部分尝试{$或:[{jobs:“2”},{jobs:“9”}]}。第二部分摆脱{name:1}。 – Veeram