2016-09-18 4 views
1

Ich habe eine Mongodb-Sammlung und jedes Dokument in dieser Sammlung enthält ein Array eines anderen Dokumenttyps.Get geschachteltes Dokument basierend auf Array-Index

EX:

{ 
    _Id: SomeObjectID, 
    AnArray:[ 
       { value:"SomeValue1", Id:1}, 
       { value:"SomeValue2", Id:2}, 
       { value:"SomeValue3", Id:3}, 
      ] 
}, 
{ 
    _Id: AnotherObjectID, 
    AnArray:[ 
       { value:"SomeValue1", Id:1}, 
       { value:"SomeValue4", Id:4},     
       { value:"SomeValue5", Id:5}, 
      ] 
} 

Wenn Sie die oben Sammlung und erstes Element des anArray Feldes sehen, werden Sie, dass Elementindex 1 in der Anordnung der beide sehen die Dokumente, die die gleichen value: SomeValue1, ID: 1 haben.

Ich möchte alle eindeutigen Werte aus dem ersten Element des Arrays aller Dokumente holen.

Ich habe keine Ahnung, wie dies zu tun ist und nicht sicher, was ich Google fragen soll, also füge ich das hier als Frage hinzu.

Ich benutze Mungo mit Mongodb und habe keine Methoden gefunden, die mir dabei helfen würden.

Wirklich zu schätzen jede Hilfe.

Antwort

2

Sie können Mongo-Aggregation-Pipeline verwenden, um Ihre Ergebnisse zu erhalten.

$arrayElemAt kann verwendet werden, um das n-te Element aus einem Array zu erhalten.

Aggregation query:

db.sample.aggregate([ 
    {$project : {arr_0_value : {$arrayElemAt : ['$AnArray',0]}}}, 
    {$project : {arr_value:'$arr_0_value.value'}}, 
    {$group : {_id:'$arr_value'}} 
]) 

Ausgang:

{ "_id" : "SomeValue1" } 
{ "_id" : "SomeValue5" } 
+0

Das hat mir sehr geholfen .. – Nilesh

Verwandte Themen