将 MongoDb 查询转换为 MongoDriver .Net 核心
Translating MongoDb query to MongoDriver .Net core
我正在尝试将以下 MongoDb 命令转换为 MongoDriver for .Net Core 中的等效命令:
db.test.aggregate([
{
$project: {
values: {
$map: {
input: { $objectToArray: "$foo" },
as: "val",
in: "$$val.v.value"
}
}
}
}
]);
但是我很难理解这些文档,因为我看到很多对我的编译器找不到的类型的引用(比如 AggregateArgs
)。使用 C# 语法表达它的最佳方式是什么?
试试这个:
var projectStage = BsonDocument.Parse(@"
{
'values' : {
'$map' : {
'input' : {
'$objectToArray' : '$foo'
},
'as': 'val',
'in': '$$val.v.value'
}
}}");
var coll = new MongoClient().GetDatabase("db").GetCollection<BsonDocument>("coll");
var res = coll
.Aggregate()
.Project(projectStage)
.ToList();
生成的投影查询将是:
{
"$project": {
"values": {
"$map": {
"input": {
"$objectToArray": "$foo"
},
"as": "val",
"in": "$$val.v.value"
}
}
}
}
不幸的是,$objectToArray 目前不支持通过类型化方式。您可以在此处找到使用类型化方式和 LINQ 的类似查询:https://github.com/mongodb/mongo-csharp-driver/blob/master/tests/MongoDB.Driver.Tests/Linq/Translators/AggregateProjectTranslatorTests.cs
我正在尝试将以下 MongoDb 命令转换为 MongoDriver for .Net Core 中的等效命令:
db.test.aggregate([
{
$project: {
values: {
$map: {
input: { $objectToArray: "$foo" },
as: "val",
in: "$$val.v.value"
}
}
}
}
]);
但是我很难理解这些文档,因为我看到很多对我的编译器找不到的类型的引用(比如 AggregateArgs
)。使用 C# 语法表达它的最佳方式是什么?
试试这个:
var projectStage = BsonDocument.Parse(@"
{
'values' : {
'$map' : {
'input' : {
'$objectToArray' : '$foo'
},
'as': 'val',
'in': '$$val.v.value'
}
}}");
var coll = new MongoClient().GetDatabase("db").GetCollection<BsonDocument>("coll");
var res = coll
.Aggregate()
.Project(projectStage)
.ToList();
生成的投影查询将是:
{
"$project": {
"values": {
"$map": {
"input": {
"$objectToArray": "$foo"
},
"as": "val",
"in": "$$val.v.value"
}
}
}
}
不幸的是,$objectToArray 目前不支持通过类型化方式。您可以在此处找到使用类型化方式和 LINQ 的类似查询:https://github.com/mongodb/mongo-csharp-driver/blob/master/tests/MongoDB.Driver.Tests/Linq/Translators/AggregateProjectTranslatorTests.cs