0

私はmongodbに次のデータを持っています:

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

Amongoshell からすべての値を返す方法を理解しています。

 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いくつかあることさえ気にしません。[ ]AB

どうすればできますか?

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 に答える