Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何返回项目位于数组中的mongo文档?_C#_Mongodb_Mongodb .net Driver - Fatal编程技术网

C# 如何返回项目位于数组中的mongo文档?

C# 如何返回项目位于数组中的mongo文档?,c#,mongodb,mongodb-.net-driver,C#,Mongodb,Mongodb .net Driver,我在mongodb集合中有一个名为“Items”的文档 我想在按条形码搜索时获取返回的主要对象和特定sku(不是所有sku)。如何在C#中使用mongo驱动程序实现这一点?您可以通过官方驱动程序的AsQueryable界面轻松实现,如下所示: collection.AsQueryable() 。其中(i=>i.sku.Any(s=>s.Barcode==“2222”)) .选择(i=>新项目 { Id=i.Id, ProductName=i.ProductName, sku=i.sku.其中(s

我在mongodb集合中有一个名为“Items”的文档


我想在按条形码搜索时获取返回的主要对象和特定sku(不是所有sku)。如何在C#中使用mongo驱动程序实现这一点?

您可以通过官方驱动程序的
AsQueryable
界面轻松实现,如下所示:

collection.AsQueryable()
。其中(i=>i.sku.Any(s=>s.Barcode==“2222”))
.选择(i=>新项目
{
Id=i.Id,
ProductName=i.ProductName,
sku=i.sku.其中(s=>s.Description==“第二个sku”)
})
.ToListAsync();
您需要对需要返回的主实体的每个属性进行手动投影,并使用
Where
子句简单地过滤SKU

上述内容将转换为如下聚合管道:

[
{
“$match”:{
“SKU”:{
“$elemMatch”:{
“条形码”:“2222”
}
}
}
},
{
“$project”:{
“\u id”:“$\u id”,
“产品名称”:“$ProductName”,
“SKU”:{
“$filter”:{
“输入”:“$SKU”,
“as”:“s”,
“条件”:{
“$eq”:[
“$$s.Barcode”,
"22222222"
]
}
}
}
}
}
]
使用mongodb.entities的测试程序:

使用MongoDB.Bson;
使用MongoDB.Driver;
使用MongoDB.Driver.Linq;
使用MongoDB.Entities;
使用System.Collections.Generic;
使用System.Linq;
使用System.Threading.Tasks;
命名空间测试应用程序
{
公共类项:实体
{
公共字符串ProductName{get;set;}
公共IEnumerable SKU{get;set;}
}
公共类Sku
{
[目的]
公共字符串Id{get;set;}
公共字符串条形码{get;set;}
}
公共静态类程序
{
专用静态异步任务Main()
{
等待DB.InitAsync(“测试”);
等待新项目
{
ProductName=“测试产品”,
SKU=新[]{
新Sku{Id=ObjectId.GenerateNewId().ToString(),Barcode=“11111111”},
新Sku{Id=ObjectId.generateWid().ToString(),Barcode=“2222”},
新Sku{Id=ObjectId.GenerateNewId().ToString(),Barcode=“33333333”}
}
}.SaveAsync();
var item=await DB.Queryable()
.其中(i=>i.SKU.Any(s=>s.Barcode==“2222”))
.选择(i=>新项目
{
ID=i.ID,
ProductName=i.ProductName,
SKU=i.SKU.其中(s=>s.Barcode==“2222”)
})
.ToListAsync();
}
}

}
使用官方驱动程序的
AsQueryable
界面,您可以轻松完成此操作,如下所示:

collection.AsQueryable()
。其中(i=>i.sku.Any(s=>s.Barcode==“2222”))
.选择(i=>新项目
{
Id=i.Id,
ProductName=i.ProductName,
sku=i.sku.其中(s=>s.Description==“第二个sku”)
})
.ToListAsync();
您需要对需要返回的主实体的每个属性进行手动投影,并使用
Where
子句简单地过滤SKU

上述内容将转换为如下聚合管道:

[
{
“$match”:{
“SKU”:{
“$elemMatch”:{
“条形码”:“2222”
}
}
}
},
{
“$project”:{
“\u id”:“$\u id”,
“产品名称”:“$ProductName”,
“SKU”:{
“$filter”:{
“输入”:“$SKU”,
“as”:“s”,
“条件”:{
“$eq”:[
“$$s.Barcode”,
"22222222"
]
}
}
}
}
}
]
使用mongodb.entities的测试程序:

使用MongoDB.Bson;
使用MongoDB.Driver;
使用MongoDB.Driver.Linq;
使用MongoDB.Entities;
使用System.Collections.Generic;
使用System.Linq;
使用System.Threading.Tasks;
命名空间测试应用程序
{
公共类项:实体
{
公共字符串ProductName{get;set;}
公共IEnumerable SKU{get;set;}
}
公共类Sku
{
[目的]
公共字符串Id{get;set;}
公共字符串条形码{get;set;}
}
公共静态类程序
{
专用静态异步任务Main()
{
等待DB.InitAsync(“测试”);
等待新项目
{
ProductName=“测试产品”,
SKU=新[]{
新Sku{Id=ObjectId.GenerateNewId().ToString(),Barcode=“11111111”},
新Sku{Id=ObjectId.generateWid().ToString(),Barcode=“2222”},
新Sku{Id=ObjectId.GenerateNewId().ToString(),Barcode=“33333333”}
}
}.SaveAsync();
var item=await DB.Queryable()
.其中(i=>i.SKU.Any(s=>s.Barcode==“2222”))
.选择(i=>新项目
{
ID=i.ID,
ProductName=i.ProductName,
SKU=i.SKU.其中(s=>s.Barcode==“2222”)
})
.ToListAsync();
}
}

}
您试过什么吗?这看起来就像JSON。您应该能够使用C#.Sor读取/解析它,几乎没有问题
"_id": {
        "$oid": "5fcfa614d588d46ec44cc375"
    },
    "ProductId": {
        "$binary": {
            "base64": "LredEr/+9UGY3g5oIDWhPw==",
            "subType": "03"
        }
    },
    "ProductName": "ModelProductTest",
    "AccountId": {
        "$binary": {
            "base64": "Gzmr+JvFq0y0YRBOfkj57w==",
            "subType": "03"
        }
    },
    "Skus": [
        {
            "_id": {
                "$oid": "5fcfa614d588d46ec44cc376"
            },
            "ProductSkuId": {
                "$binary": {
                    "base64": "MBLj5bL6C0Cph0fMkpbDZA==",
                    "subType": "03"
                }
            },
            "ProductId": {
                "$binary": {
                    "base64": "LredEr/+9UGY3g5oIDWhPw==",
                    "subType": "03"
                }
            },
            "SkuCode": "kkss",
            "Barcode": "12345",
            "Description": "test",
            "StockQuantity": {
                "$numberInt": "2"
            },
            "Costs": [
                {
                    "_id": {
                        "$oid": "5fcfa614d588d46ec44cc378"
                    },
                    "ProductPriceId": {
                        "$binary": {
                            "base64": "81rqEsKc9k6y2IQQjE1DJg==",
                            "subType": "03"
                        }
                    },
                    "ProductSkuId": {
                        "$binary": {
                            "base64": "MBLj5bL6C0Cph0fMkpbDZA==",
                            "subType": "03"
                        }
                    },
                    "DateValidFrom": {
                        "$date": {
                            "$numberLong": "1607443988489"
                        }
                    },
                    "Cost": "33"
                },
                {
                    "_id": {
                        "$oid": "5fcfa614d588d46ec44cc379"
                    },
                    "ProductPriceId": {
                        "$binary": {
                            "base64": "aqdf9S6yUUCIZEjLY/1pvw==",
                            "subType": "03"
                        }
                    },
                    "ProductSkuId": {
                        "$binary": {
                            "base64": "MBLj5bL6C0Cph0fMkpbDZA==",
                            "subType": "03"
                        }
                    },
                    "DateValidFrom": {
                        "$date": {
                            "$numberLong": "1607443988492"
                        }
                    },
                    "Cost": "39"
                }
            ]
        },
        {
            "_id": {
                "$oid": "5fcfa614d588d46ec44cc377"
            },
            "ProductSkuId": {
                "$binary": {
                    "base64": "XFkTknYw2Uyy2ae/F/yj1A==",
                    "subType": "03"
                }
            },
            "ProductId": {
                "$binary": {
                    "base64": "LredEr/+9UGY3g5oIDWhPw==",
                    "subType": "03"
                }
            },
            "SkuCode": "kksass",
            "Barcode": "12346",
            "Description": "test",
            "StockQuantity": {
                "$numberInt": "6"
            },
            "Costs": [
                {
                    "_id": {
                        "$oid": "5fcfa614d588d46ec44cc37a"
                    },
                    "ProductPriceId": {
                        "$binary": {
                            "base64": "hxWucmMsnkOkRb1j9/EtGA==",
                            "subType": "03"
                        }
                    },
                    "ProductSkuId": {
                        "$binary": {
                            "base64": "XFkTknYw2Uyy2ae/F/yj1A==",
                            "subType": "03"
                        }
                    },
                    "DateValidFrom": {
                        "$date": {
                            "$numberLong": "1607443988492"
                        }
                    },
                    "Cost": "31"
                },
                {
                    "_id": {
                        "$oid": "5fcfa614d588d46ec44cc37b"
                    },
                    "ProductPriceId": {
                        "$binary": {
                            "base64": "ExyZdI6suE2Zs5oRdeiK9w==",
                            "subType": "03"
                        }
                    },
                    "ProductSkuId": {
                        "$binary": {
                            "base64": "XFkTknYw2Uyy2ae/F/yj1A==",
                            "subType": "03"
                        }
                    },
                    "DateValidFrom": {
                        "$date": {
                            "$numberLong": "1607443988492"
                        }
                    },
                    "Cost": "36"
                }
            ]
        }
    ]