0

我在 mongodb 上有以下数据:

{
    "name" : "bla",
    "log" : [
        {
            "A" : 1,
            "B" : 10
        },
        {
            "A" : 2,
            "B" : 20
        }
    ]
}

我了解如何A从 mongoshell 返回所有值:

 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,甚至[ ]在输出中有一些,只要它总是只有一个条目 forA和 forB

我该怎么做?

4

1 回答 1

2

您可以使用$slice数组投影运算符来做到这一点:

db.test.find({}, {name: 1, 'log.A':1, log: {$slice: 1}})

输出:

{ "_id" : ObjectId("..."), "name" : "bla", "log" : [  {  "A" : 1 } ] }
于 2013-10-30T16:05:20.843 回答