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

不同的值我想從外地Name找回我的CourseData對象數組裏面用不同的值的列表。過濾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"名稱字段的不同值匹配查詢

其中例如文件,運行此查詢:

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

則回覆:

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

謝謝felix,我剛剛意識到,我拼錯我的數組時,我早些時候嘗試了相同的獨特選項...你好星期一! – mp1990