2017-03-06 6 views
2
{ 
    "_id" : NUUID("f5050a5d-b3be-4de6-a135-a119436fb511"), 
    "CoursesData" : [ 
     { 
      "Name" : "Naturgræs", 
      "Value" : 1 
     } 
    ], 
    "FacilityType" : { 
     "_id" : NUUID("a1b4844b-518b-40e2-8aa5-8ee399ac2d4e") 
    } 
} 

私はCourseDataの私のオブジェクト配列内のフィールドNameは異なる値を使用してリストを取得したいの取得します。フィルタリングされたものはFacilityType._idです。私は$facetdistinct演算子の両方を使ってみましたが、オブジェクト配列が好きではないようです。は、オブジェクト配列にMongoDBは異なる値

私の結果は、この(または類似)のようになります

FacilityType (a1b4844b-518b-40e2-8aa5-8ee399ac2d4e), 
CourseData: [Name1, Name2, Name3] 

更新

下記の答えから、誰もがする必要がある場合、これは、あなたがC#のドライバでそれを行う方法です同じことをする。

FieldDefinition<FacilityDocument, string> field = "CoursesData.Name"; 

    var result = FacilityCollection.Distinct(field, Builders<FacilityDocument>.Filter.Eq(x => x.FacilityType.ID, new Guid("a1b4844b-518b-40e2-8aa5-8ee399ac2d4e"))).ToList(); 

答えて

1

distinct()を使用できます。それはあなたが施設"a1b4844b-518b-40e2-8aa5-8ee399ac2d4e"のNameフィールドの個別の値をしたい場合は、このクエリを実行たとえば、クエリ

と一致した文書から特定のフィールドのための個別の要素を返します。

db.collection.distinct("CoursesData.Name", {"FacilityType._id": "a1b4844b-518b-40e2-8aa5-8ee39ac2d4e"}) 

それが返されます:

[ "Naturgræs", ... ] 
+0

フェリックスさん、ありがとう、私は以前、私は別の同じオプションを試したときに私の配列のスペルが間違っていることに気付きました...こんにちはmonday! – mp1990

関連する問題