我有一系列产品,产品如下所示:
In [2]: requests.get('http://www.dwconstir.com/inc/download.asp?FileName=3Q17%20%uC2E4%uC801PT_ENG.pdf')
Out[2]: <Response [400]>
我想要的是让所有拥有{
"invNumber":445,
"attributes": [
{
"id": "GR1",
"value": "4",
"description": "Re/Rek"
},
{
"id": "WEBAKKUNDE",
"value": "2",
"description": "NO"
},
{
"id": "WEBAKKUNDK",
"value": "1",
"description": "YES"
},
{
"id": "WEBAKMONTO",
"value": "2",
"description": "NO"
}
{
"id": "WEBPAKFTTH",
"value": "2",
"description": "NO"
}
]
}
或{"id":"WEBAKKUNDE",value:1}
并且来自这些产品的产品,而不仅仅是返回所有产品
{"id":"WEBPAKFTTH","value":"1"}
个对象。
我想尝试这样的事情:
{"id": "GR1"}
但我不知道如何从退回的产品中获取不同的对象。
答案 0 :(得分:0)
尝试以下查询:
$match:{ "attributes.id" : "WEBAKKUNDE", "attributes.value":"1" }
但我们来解释一下:
id
会找到与文档中的value
和$unwind: "$attributes"
属性相匹配的所有文档:
$match: { "attributes.id": "GR1" }
将为我们提供数组项目的文档,因此在您的示例中,我们最终会得到5个文档。
id
会过滤掉GR1
use Symfony\Component\HttpFoundation\Session\Flash\FlashBag;
use Symfony\Component\HttpFoundation\Session\Session;
use Symfony\Component\Translation\Translator;
class FlashBagTranslator
{
/** @var Translator $translator */
private $translator;
/** @var FlashBag $flashBag */
private $flashBag;
public function __construct(Translator $translator, Session $session)
{
$this->translator = $translator;
$this->flashBag = $session->getFlashBag();
}
public function addMessage($type, $translationKey, array $parameters = [], $domain = null, $locale = null)
{
$message = $this->translator->trans($translationKey, $parameters, $domain, $locale);
if ($message === $translationKey) {
// Your translation isn't findable, do something :)
return false;
}
$this->flashBag->add($type, $message);
return true;
}
}
更多阅读:
https://docs.mongodb.com/manual/reference/operator/aggregation/match https://docs.mongodb.com/manual/reference/operator/aggregation/unwind
答案 1 :(得分:0)
您可以使用以下聚合查询。
$match
检查数组是否有输入条件,后跟$filter
$arrayElemAt
以投影GR1元素。
$group
输出不同的值。
注意 - 如果您希望拥有没有GR1元素的属性来匹配属性,则需要将GR1条件添加到$ match。
db.products.aggregate([
{"$match":{
"attributes":{
"$elemMatch":{
"$or":[
{"id":"WEBAKKUNDE","value":"1"},
{"id":"WEBPAKFTTH","value":"1"}
]
}
}
}},
{"$group":{
"_id":{
"$arrayElemAt":[
{"$filter":{"input":"$attributes","cond":{"$eq":["$$this.id","GR1"]}}},
0
]
}
}}
])