2013-10-30 80 views
0

我有一個mongodb的以下數據:蒙戈殼:僅返回1嵌套數組的元素

{ 
    "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的輸出限制爲只有第一個元素?這是我extect有輸出:

{ "_id" : ObjectId("52712539c99a2fc6f6088cd4"), "name" : "bla", "log.A" : 1, "log.B":10} 

我不介意有log.A或只是A,甚至有一些[ ]輸出,只要它一直是A,只有一個入口爲B

我該怎麼辦?

回答

2

可以使用$slice陣列投影算這樣做:

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

輸出:

{ "_id" : ObjectId("..."), "name" : "bla", "log" : [ { "A" : 1 } ] }