如何在mongodb的单个json文档中过滤对象数组? [复制]

Posted

技术标签:

【中文标题】如何在mongodb的单个json文档中过滤对象数组? [复制]【英文标题】:How to filter in array of objects within a single json document in mongodb? [duplicate] 【发布时间】:2017-10-19 16:29:06 【问题描述】:

我是 mongodb 的新手,我的要求是在单个文档的对象数组中进行过滤

例如:下面是我的 json 文档。我想在组合中查询以找到所有值为“abc 制造商”的制造商。

我尝试的查询是 db.Product.find("Combinations": $elemMatch: "Manufacturer":"abc manufacturer")。不幸的是,它没有返回 abc 制造商的结果,而是全部返回。

我的结果应该与下面附上的屏幕截图完全相同。由于它在sql server中,现在我想要在mongodb中进行相同的等效查询。论坛中的一些专家给我一些启发。

Screenshot

"_id" : ObjectId("59e8c938ab3166800493273f"), "ProductId" : 26, "Combinations" : [ "#Type" : "S", "Manufacturer" : "abc manufacturer", "Model Name" : "Squatting Urinal", "Size" : "475 x 365 x 105 mm", "Colour" : "White" , "#Type" : "S", "Manufacturer" : "abc manufacturer", "Model Name" : "Squatting", "Size" : "430 x 350 x 100 mm" , "#Type" : "S", "Manufacturer" : "def manufacturer", "Model Name" : "Squatting Urinal", "Size" : "440 x 355 x 102 mm", "Colour" : "White" , "#Type" : "S", "Manufacturer" : "xyz manufacturer", "Model Name" : "Squatting Urinal", "Size" : "440 x 355 x 102 mm", "Colour" : "Ivory" , "#Type" : "S", "Manufacturer" : "ghi manufacturer", "Model Name" : "Squatting Pan - 861" , "#Type" : "S", "Manufacturer" : "xyz manufacturer", "Model Name" : "Mateo", "Size" : "470 x 365 x 100 mm" , "#Type" : "S", "Manufacturer" : "xyz manufacturer", "Model Name" : "Squatting", "Size" : "340 x 435 x 100 mm", "Colour" : "White" ]

【问题讨论】:

【参考方案1】:

如果我了解您要搜索的内容,那么 制造商abc 的所有组合。 您刚刚执行的查询为您提供了包含与所述制造商组合的所有文档。

你应该检查aggregations

https://docs.mongodb.com/manual/aggregation/

【讨论】:

以上是关于如何在mongodb的单个json文档中过滤对象数组? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

mongodb更新数组中的单个对象

如何使用C#在数组mongoDB中获取子文档

mongodb

带有 C#Driver 的 MongoDB:如何过滤嵌套对象数组中的字段

如何在 MongoDB 的嵌入式数组对象中插入 json 对象?

socket.io 和按对象 id 过滤 mongodb