{
"_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
过滤。我尝试使用$facet
和distinct
运算符,但它似乎不喜欢对象数组。
我的结果应该是这样(或类似的):
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();
答案 0 :(得分:1)
您可以使用distinct()
。它将从匹配查询的文档中返回特定字段的不同元素
例如,如果您想要设施pushd %~dp0
for /r %%f in ("*EG_*.exe") DO ("%~dp07za.exe" u "%%~ff" "%~dp0configs\config.cfg")
pause
exit
的名称字段的不同值,请运行此查询:
"a1b4844b-518b-40e2-8aa5-8ee399ac2d4e"
它将返回:
db.collection.distinct("CoursesData.Name", {"FacilityType._id": "a1b4844b-518b-40e2-8aa5-8ee39ac2d4e"})