0

私は以下に示す構造を持っています:

{
  field1: "somevalue",
  name:"xtz",
  nested_documents: [ 
                        {   
                            x:1,
                            y:2,
                            info:[
                                    {name:"sachin",value:"test"},
                                    {name:"sachin", value:"test"}
                                 ]
                        },
                        {
                            x:1,
                            y:3,
                            info:[
                                    {name:"sachin1",value:"test"},
                                    {name:"sachin2", value:"test"}
                                 ]
                        },
                        {
                            x:4,
                            y:3,
                            info:[
                                    {name:"sachin",value:"test"},
                                    {name:"sachin", value:"test"}
                                 ]
                        }
                    ]
    }

以下のコードを使用して、最初の配列内に存在する要素を取得できることを知っています。

db.test.find({"nested_documents.x": 1},{_id: 0, nested_documents: {$elemMatch: {x: 1}}}

しかし、属性にも同じロジックを適用したいと思いnameます。「さちん」という名前の文書だけを取得したい。私が試したことを以下に示します。

db.test.find({"nested_documents.info.name": "sachin"}, 
        {_id: 0, 'nested_documents.info': {$elemMatch: {name: "sachin"}}});

しかし、Mongo db は「.」をサポートしていないと言っています。射影内の演算子:(。
これを行う他の方法はありますか?(コマンドプロンプトまたはコードを使用)

ドキュメントを挿入するコマンドを以下に示します。

db.test.insert( {
  field1: "somevalue",
  name:"xtz",
  nested_documents: [ 
                        {   
                            x:1,
                            y:2,
                            info:[
                                    {name:"sachin",value:"test"},
                                    {name:"sachin", value:"test"}
                                 ]
                        },
                        {
                            x:1,
                            y:3,
                            info:[
                                    {name:"sachin1",value:"test"},
                                    {name:"sachin2", value:"test"}
                                 ]
                        },
                        {
                            x:4,
                            y:3,
                            info:[
                                    {name:"sachin",value:"test"},
                                    {name:"sachin", value:"test"}
                                 ]
                        }
                    ]
    }
    )

私は次のような出力を期待しています:

{ "_id" : ObjectId("5142e0f153cd2aab3a3bae5b"), 
"nested_documents" : [ 
                        {       "x" : 1,        "y" : 2,       
                        "info" : [     
                                    {       "name" : "sachin",      "value" : "test" },   
                                    {       "name" : "sachin",      "value" : "test" } 
                                ] 
                        },
                        {      "x" : 4,        "y" : 3,        
                        "info" : [      {       "name" : "sachin",      "value" : "test" },
                                        {       "name" : "sachin",      "value" : "test" } 
                                ] 
                        } 
                    ]
}
4

1 に答える 1