我在mongodb上有以下数据:
{
"name" : "bla",
"log" : [
{
"A" : 1,
"B" : 10
},
{
"A" : 2,
"B" : 20
}
]
}
我了解如何从mongoshell中返回A
的所有值:
db.test.find({},{'name':1,'log.A':1})
{ "_id" : ObjectId("52712539c99a2fc6f6088cd4"), "name" : "bla", "log" : [ { "A" : 1 }, { "A" : 2 } ] }
但是如何将A
的输出限制为仅第一个元素?这是我扩展的输出:
{ "_id" : ObjectId("52712539c99a2fc6f6088cd4"), "name" : "bla", "log.A" : 1, "log.B":10}
我不介意log.A
或A
,或者输出中只有[ ]
,只要它始终只有{{1}的一个条目}和A
我该怎么办?
答案 0 :(得分:2)
您可以使用$slice
数组投影运算符来执行此操作:
db.test.find({}, {name: 1, 'log.A':1, log: {$slice: 1}})
输出:
{ "_id" : ObjectId("..."), "name" : "bla", "log" : [ { "A" : 1 } ] }