mongodb - 数组中的项目元素

时间:2014-03-14 03:17:32

标签: mongodb

文档{"m":[1,2,3], "others":xxx},通过以下方式获取数组'm'中的第一个元素:

db.find({query},{"m":{$slice:1}, "m":1})

返回值为{"m":[1]},doc中的元素为数组。但是在这个查询中,数组中只有一个元素会被获取,所以我不需要返回doc包含只有一个元素的数组。这就像子查询中的SQL局部变量。我想要的元素在原始文档中没有名称,如果我想要它,那么我需要为它命名,我想要的文档就像:{“localVariable”:1}而不是{“m”:[1 ]}

我尝试通过以下方式展开第一个元素:

db.find({query},{"m":{$slice:1}, "m.1":1})

但这不起作用。

1 个答案:

答案 0 :(得分:0)

您似乎在寻找positional $运营商匹配。它的工作原理如下:

 db.collection.find({ m: 2 },{ "m.$": 1 })

这会返回匹配的元素

如果您实际上希望始终获取第二个元素,那么您需要$slice的两个参数形式:

 db.collection.find({ },{ "m": { "$slice": [1,1] } })

测试输出:

 db.test.insert({ m: [1,2,3] })
 db.test.find({ },{ "m": {$slice: [1,1]} })

  { "_id" : ObjectId("5323cc2770fde63cf1146ba3"), "m" : [  2 ] }