2017-05-22 1 views
0

Ich versuche, eine coolection abzufragen, der die folgende Struktur:Abfrage verschachtelt, 2 Leves, Array von Objekten in MongoDB

{ 
"_id" : ObjectId("58eed22d09865610c23453e3"), 
"name" : "Maria das Dores", 
"type" : "P", 
"nickname" : "Dolores", 
"notes" : "Notas\r\n\r\nCom quebra de página", 
"updated_at" : ISODate("2017-04-13T01:19:41.000Z"), 
"created_at" : ISODate("2017-04-13T01:19:41.000Z"), 
"emails" : [ 
    { 
     "value" : "[email protected]", 
     "default" : true, 
     "updated_at" : ISODate("2017-04-13T01:19:41.000Z"), 
     "created_at" : ISODate("2017-04-13T01:19:41.000Z"), 
     "_id" : ObjectId("58eed22d09865610c23453e4") 
    }, 
    { 
     "value" : "[email protected]", 
     "_id" : ObjectId("58eed23d09865605614005c4"), 
     "updated_at" : ISODate("2017-04-13T01:19:57.000Z"), 
     "created_at" : ISODate("2017-04-13T01:19:57.000Z") 
    } 
], 
"phones" : [ 
    { 
     "value" : "(33) 8282383-2933", 
     "default" : false, 
     "updated_at" : ISODate("2017-04-25T12:11:14.000Z"), 
     "created_at" : ISODate("2017-04-13T01:19:41.000Z"), 
     "_id" : ObjectId("58eed22d09865610c23453e5") 
    }, 
    { 
     "value" : "(85) 101010-1010101", 
     "default" : true, 
     "_id" : ObjectId("58ff3ce209865605681f40c2"), 
     "updated_at" : ISODate("2017-04-25T12:11:14.000Z"), 
     "created_at" : ISODate("2017-04-25T12:11:14.000Z") 
    }, 
    { 
     "value" : "21343243343", 
     "_id" : ObjectId("58ff3d7d0986560b861c3b32"), 
     "updated_at" : ISODate("2017-04-25T12:13:49.000Z"), 
     "created_at" : ISODate("2017-04-25T12:13:49.000Z") 
    } 
], 
"copartner" : { 
    "enabled" : true, 
    "updated_at" : ISODate("2017-05-17T00:32:42.000Z"), 
    "created_at" : ISODate("2017-05-11T02:35:40.000Z"), 
    "_id" : ObjectId("5913cdfc09865664df031ec2"), 
    "applications" : { 
     "0" : { 
      "application_id" : "58e46443098656283d225b52", 
      "responsibility" : "DEV", 
      "percentage" : 1250, 
      "_id" : ObjectId("591a6f9d0986563c174cefd3"), 
      "updated_at" : ISODate("2017-05-16T03:18:53.000Z"), 
      "created_at" : ISODate("2017-05-16T03:18:53.000Z") 
     }, 
     "1" : { 
      "application_id" : "58e46443098656283d225b52", 
      "responsibility" : "SALE", 
      "percentage" : 2000, 
      "_id" : ObjectId("591b9a2a09865605697fe3e3"), 
      "updated_at" : ISODate("2017-05-17T00:32:42.000Z"), 
      "created_at" : ISODate("2017-05-17T00:32:42.000Z") 
     } 
    } 
} 
} 

ich bereits mit der „Punkt“ Notation testen und $elemMatch verwenden, aber niemanden von ihnen ergeben irgendein Match.

Dot Notation query:

db.getCollection('persons').find({ 
    "copartner.applications.application_id": "58e46443098656283d225b52" 
}) 

$ elemMatch query:

db.getCollection('persons').find({ 
    "copartner.applications": { $elemMatch: { "applications_id": "58e46443098656283d225b52" } } 
}) 

Antwort

0

Die Punktnotation mit arbeiten entweder eine dieser Anfragen:

db.getCollection('persons').find({ 
"copartner.applications.0.application_id": "58e46443098656283d225b52"}) 

UND

db.getCollection('persons').find({ 
"copartner.applications.1.application_id": "58e46443098656283d225b52"}) 

"Anwendungen" ist kein Array, daher ist $ elemMatch nicht anwendbar. "0" und "1" sind verschachtelte Felder anstelle von Array-Elementen. Wenn Sie können, verwenden Sie besser ein Array für "Anwendungen".

+0

Oh Gott, ich habe wirklich meinen Fehler nicht gesehen, ich spare als Objekt statt als Array, vielen Dank –

Verwandte Themen