【问题标题】:Translating MongoDb query to MongoDriver .Net core将 MongoDb 查询转换为 MongoDriver .Net 核心
【发布时间】:2020-11-09 01:15:11
【问题描述】:

我正在尝试将以下 MongoDb 命令转换为 MongoDriver for .Net Core 中的等效命令:

 db.test.aggregate([
  { 
     $project: {
        values: {
          $map: {
            input: { $objectToArray: "$foo" },
            as: "val",
            in: "$$val.v.value"
          }
        }
     }
  }
]);

但是我在尝试理解文档时遇到了麻烦,因为我看到很多对我的编译器找不到的类型的引用(例如 AggregateArgs)。使用 C# 语法表达它的最佳方式是什么?

【问题讨论】:

    标签: c# mongodb .net-core mongodb-.net-driver


    【解决方案1】:

    试试这个:

                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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-10-31
      • 1970-01-01
      • 1970-01-01
      • 2018-01-11
      • 1970-01-01
      • 1970-01-01
      • 2020-09-30
      • 1970-01-01
      相关资源
      最近更新 更多