C# Mongo 检索子文档

标签 c# mongodb

我的收藏中有以下文档:

{
    "Target_Year" : 2017,
    "Target_Month" : 6,
    "Performance" : [ 
       {
        "Report_Day": 1,
        "First_Level_Superior" : "WS66",
        "Second_Level_Superior" : "SB23"
    }, 
    {
        "Report_Day": 2,
        "First_Level_Superior" : "CN4",
        "Second_Level_Superior" : "WS66"
    }, 
    {
        "Report_Day": 3,
        "First_Level_Superior" : "",
        "Second_Level_Superior" : "TN27"
    }]
}

以下是我当前的过滤代码:

var builder = Builders<BsonDocument>.Filter;
var filterMain = builder.Eq("Target_Year", "2017") & builder.Eq("Target_Month", "6") & builder.Eq("Performance.Report_Day", "1");
var result = mongoDB.Performance.Find(filterMain).FirstOrDefault();

我实际上需要检索的是:

    {
        "Report_Day": 1,
        "First_Level_Superior" : "WS66",
        "Second_Level_Superior" : "SB23"
    }

或者

 {
    "Target_Year" : 2017,
    "Target_Month" : 6,
    "Performance" : [ { 
        "Report_Day": 1,
        "First_Level_Superior" : "WS66",
        "Second_Level_Superior" : "SB23"
    }]
}

非常感谢任何帮助。

最佳答案

您需要添加 "projection"positional $ operator从查询条件中引用匹配的数组项:

var builder = Builders<BsonDocument>.Filter;
var filterMain = builder.Eq("Target_Year", "2017") & builder.Eq("Target_Month", "6") &
    builder.Eq("Performance.Report_Day", "1");
var project = Builders<BsonDocument>.Projection.Include("Performance.$");

var result = mongoDB.Performance.Find(filterMain).Project(project).FirstOrDefault();

$ 表示在查询表达式中匹配的数组的“索引”:

builder.Eq("Performance.Report_Day", "1");

关于C# Mongo 检索子文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44796830/

相关文章:

c# - Azure Service Fabric 持续集成在 Visual Studio Team Services 中失败(以前是 VSO)

node.js - Nodejs 和 mongodb 中用于博客的 REST API

javascript - mongodb 检查值是否存在(node.js)

python - 通过python将用户添加到mongodb

c# - .net 字典与其他托管自定义数据结构的对比,为什么 .net 字典如此之快?

c# - MVC 代码优先 : One-to-many relationship between own model and SimpleMembership user

c# - 构造函数/析构函数链接错误

c# - C# 5.0 显式数值转换描述是否正确?

mongodb - 如何增加或减少通过 Helm bitnami/mongodb分片部署的mongodb分片的数量?

reactjs - 该电子邮件已存在验证