mongodb - 数组中的项目元素

jea*_*ean 5 mongodb

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

db.find({query},{"m":{$slice:1}, "m":1})
Run Code Online (Sandbox Code Playgroud)

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

我尝试通过以下方式投影出第一个元素:

db.find({query},{"m":{$slice:1}, "m.1":1})
Run Code Online (Sandbox Code Playgroud)

但这行不通。

Nei*_*unn 1

您似乎正在寻找位置$运算符匹配。它的工作原理如下:

 db.collection.find({ m: 2 },{ "m.$": 1 })
Run Code Online (Sandbox Code Playgroud)

这将返回您匹配的元素

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

 db.collection.find({ },{ "m": { "$slice": [1,1] } })
Run Code Online (Sandbox Code Playgroud)

测试输出:

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

  { "_id" : ObjectId("5323cc2770fde63cf1146ba3"), "m" : [  2 ] }
Run Code Online (Sandbox Code Playgroud)