C# 带投影的Mongo聚集
鉴于以下文件C# 带投影的Mongo聚集,c#,mongodb,C#,Mongodb,鉴于以下文件 { "Id": "MyNormalObjectId", "CompanyId" : 1234, "User" : { "UserId":4567, "FirstName":"Tester", "Lastname":"McCtesterson&qu
{
"Id": "MyNormalObjectId",
"CompanyId" : 1234,
"User" :
{
"UserId":4567,
"FirstName":"Tester",
"Lastname":"McCtesterson"
}
}
如何编写聚合查询以返回给定公司中所有唯一用户的列表(包括名字和姓氏)
FilterDefinitionBuilder=Builders.Filter;
var filter=builder.Eq(t=>t.CompanyId,CompanyId);
var aggregate=_col.aggregate();
aggregate.Match(filter.GroupBy(t=>t.User.UserId,??)
期望的结果是UserMetadata的哈希集。我见过很多人为了他们需要的东西直接去BSon,如果有必要,我可以。强类型总是更好。您可以在
$group
管道阶段内使用$addToSet
操作符
以获得所需的输出
db.collection.aggregate([
{
"$match": {
"CompanyId": 1234 // Find Conditions go here
}
},
{
"$group": {
"_id": "$CompanyId",
"Users": {
"$addToSet": "$User",
},
},
},
])
分组前,请先解开
用户
数组。如果不清楚,请道歉。为了清楚起见,这个例子被淡化到了可能不清楚的程度。用户不在数组中。每个文档一对一。这个的C版本是什么?这在Mongo Shell中,只需将其转换为C即可#
db.collection.aggregate([
{
"$match": {
"CompanyId": 1234 // Find Conditions go here
}
},
{
"$group": {
"_id": "$CompanyId",
"Users": {
"$addToSet": "$User",
},
},
},
])