c# - 查询 documentdb 中的子字段

标签 c# mongodb mongodb-.net-driver aws-documentdb

例如,我在下面有一个文档,用于收集 = 交付:

{
    "doc": [
        {
            "docid": "15",
            "deliverynum": "123",
            "text": "txxxxxx",
            "date": "2019-07-18T12:37:58Z"
        },
        {
            "docid": "16",
            "deliverynum": "456",
            "text": "txxxxxx",
            "date": "2019-07-18T12:37:58Z"
        },
        {
            "docid": "17",
            "deliverynum": "999",
            "text": "txxxxxx",
            "date": "2019-07-18T12:37:58Z"
        }
    ],
    "id": "123",
    "cancelled": false
}

是否可以使用“deliverynum”= 999 进行搜索并且输出如下所示?

{
    "doc": [        
        {
            "docid": "17",
            "deliverynum": "999",
            "text": "txxxxxx",
            "date": "2019-07-18T12:37:58Z"
        }
    ],
    "id": "123",
    "cancelled": false
}

还是我应该为 Doc 部分制作另一个 Collection?

对于这种情况,我无法在 C# 中进行查询。

最佳答案

在 Mongo shell 中,您可以使用 $(projection)运算符(operator):

db.collection.find({ "doc.deliverynum": "999" }, { "doc.$": 1 })

相应的 C# 代码如下所示:

var q = Builders<Model>.Filter.ElemMatch(x => x.doc, d => d.deliverynum == "999");
var p = Builders<Model>.Projection.ElemMatch(x => x.doc, d => d.deliverynum == "999");

var data = Col.Find(q).Project(p).ToList();

您还可以使用 q = Builders<Model>.Filter.Empty如果您想获取所有文档,即使不包含 deliverynum =``999

关于c# - 查询 documentdb 中的子字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57096251/

相关文章:

c# - 尝试连接到 sftp 服务器时没有消息或超时

c# - ForEach 修剪字符串数组中的字符串值

c# - 在 C# 中填充 Azure 表存储表

php - Flex 应用程序引擎 mongoDb

mongodb - MongoDB 模型上的重复键错误,即使模型没有为该值强制执行唯一性

mongodb - 将数据发布到 Meteor 的 MongoDB 集合

c# - 使用 MongoDB-CSharp 在 MongoDB 中正确抽象 OId

c# - dirinfor.EnumerateFiles -> 错误

mongodb - 将 mongo 查询的输出重定向到 csv 文件

c# - MongoDB C# : Question about pagination