2016-06-17 19 views
0

MongoDBに格納されているJSONドキュメントはほとんどなく、基本的にエラーレポートです。つまり、各ドキュメントにはネストされたデータ構造の不一致が含まれています。彼らは、次のようになります。ネストされたmongoドキュメントの照会

{ 
     "nodename": "BLAH" 
     "errors": { 
     "PC": { 
      "value": { 
      "PC93196": [ 
       "post", 
       "casper" 
      ], 
      "PC03196": [ 
       "netdb" 
      ] 
      } 
     } 
     } 
    } 

は、したがって、上記の場合には、プロセス/ツールはPC93196PC03196PC値を決定します。この場合のnetdbは、postcasperと異なるPC値を報告しました。

プロセス/ツールcasperが関係するエラーのあるすべてのドキュメントをクエリするにはどうすればよいですか?

答えて

0

文書スキーマは、実際にあなたがしようとしている方法で非常に簡単に照会することはできません。これは、valueオブジェクトがオブジェクトの配列ではなく、名前付きオブジェクトで構成されているためです。私。 valueオブジェクトには、PC93196PC03196の2つのプロパティがあります。

ドキュメントが多少異なって構成されている場合は、必要な方法でクエリする方がはるかに簡単です。例えば、このような文書構造:

db.errors.aggregate([{$unwind:"$errors.PC"},{$match:{"errors.PC.type":"casper"}}]) 

結果を提供します::

{ "_id" : ObjectId("5763c480dad14fd061657f91"), "nodename" : "BLAH", "errors" : { "PC" : { "name" : "PC93196", "type" : [ "post", "casper" ] } } } 

{ 
    "nodename": "BLAH", 
    "errors": { 
    "PC": [ 
     { 
     "name": "PC93196", 
     "type": [ 
      "post", 
      "casper" 
     ] 
     }, 
     { 
     "name": "PC03196", 
     "type": [ 
      "netdb" 
     ] 
     } 
    ] 
    } 
} 

は、あなたがこのようなクエリを書くことができるようになります

関連する問題