c# - 将许多字段传递到聚合管道中的下一阶段
问题描述
请让我知道以下 MongoDB 查询的 C# 等效项。它在 Robo3T for MongoDB 中运行良好
db.UserProfile.aggregate([
{
$project: {
SName:1,
FName:1,
DemRole: {
$filter: {
input: "$DemRole",
as: "item",
cond: { $eq: [ "$$item.Name", "FO" ] }
}
}
}
}
])
解决方案
我可以通过下面的 C# 代码来实现这一点
var stage1 = "{ $project: { SName: 1, FName: 1, DemRole: { $filter: { input: '$DemRole', as: 'item', cond: { $eq: ['$$item._id', '5bc49241f12541c3aaa098ee' ] } } } } }";
var query = collection.Aggregate(new AggregateOptions() { AllowDiskUse = true })
.AppendStage<BsonDocument>(stage1).ToEnumerable();
return query?.Select(point => BsonSerializer.Deserialize<RetUserProfile4Role>(point)).ToList();
推荐阅读
- batch-file - 如何在 .nsh 或 nsis 安装程序中运行或执行 .bat 文件(就像我们使用 cmd.exe 手动运行 .bat 文件一样)?
- java - 如何从自动生成的标签中访问值?
- axios - Axios Vue Js:如何获取此对象的值以显示在 api get request url
- python - 在 pytorch 或 huggingface/transformer 标签的代码中哪里被“重命名”为标签?
- android - com.example.androiddata.databinding.FragmentDetailBindingImpl.executeBindings(FragmentDetailBindingImpl.java:147)
- jquery - JSP 上的 JQUERY AJAX 和 SELECT ELEMENT
- c++ - 如何在 Visual Studio 2015 中使用 C++ 语言?
- android - 如何恢复意外删除的 Flutter 代码文件?
- nlp - 在 spacy 中使用 glove.6B.100d.txt 嵌入得到零 lex.rank
- r - 在 Ubuntu v20.04 上的 R v4.0.1 上安装 mclust 包 v5.4.6 挂起