如何过滤mongodb中单个json文档中的对象数组?

如何过滤mongodb中单个json文档中的对象数组?

问题描述:

我对mongodb是一个新手,我的要求是在单个文档的对象数组内过滤如何过滤mongodb中单个json文档中的对象数组?

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

我试过的查询是 db.Product.find({"Combinations": {$elemMatch: {"Manufacturer":"abc manufacturer"}}})。不幸的是,它不会将结果返回给abc制造商,而是全部。

我的结果应该与下面的截图完全相似。因为它在SQL服务器中,现在我想要在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" } ] }

如果我知道你要搜索的内容,是所有组合其中厂商ABC。 您刚刚进行的查询为您提供了包含组合与所述制造商的所有文档。

您应该检查aggregations

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