Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.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
Node.js MongoDB-如何更新/推送由另一个对象包含的数组中的对象,而另一个对象又由另一个数组包含_Node.js_Database_Mongodb - Fatal编程技术网

Node.js MongoDB-如何更新/推送由另一个对象包含的数组中的对象,而另一个对象又由另一个数组包含

Node.js MongoDB-如何更新/推送由另一个对象包含的数组中的对象,而另一个对象又由另一个数组包含,node.js,database,mongodb,Node.js,Database,Mongodb,下面是一段代码片段 { "summary":[ { "chem_id":"5e18c858c88e1e2328771593", "chem_sale": [ { "product_id": "5e3c5042ac7e0d67c3b5ae6f", "product_sale": 8900

下面是一段代码片段

{
    "summary":[
        {
            "chem_id":"5e18c858c88e1e2328771593",
            "chem_sale": [
                {
                    "product_id": "5e3c5042ac7e0d67c3b5ae6f",
                    "product_sale": 8900
                },
                {
                    "product_id": "5e3c5029ac7e0d67c3b5ae6e",
                    "product_sale": 6500
                }
            ]
        },
        {
            "chem_id":"5e1b1cb5f3123a3a74f014f5",
            "chem_sale": [
                {
                    "product_id": "5e3c5042ac7e0d67c3b5ae6f",
                    "product_sale": 2900
                },
                {
                    "product_id": "5e3c5029ac7e0d67c3b5ae6e",
                    "product_sale": 3500
                }
            ]
        }       
    ]
}
如果新产品对象的id是唯一的且 如何更新产品销售

我尝试过将新产品对象添加到摘要数组中

 let saleRecord = await saleRecordModel.findOneAndUpdate(
      { emp_id: req.params.id },
      { $addToSet: { summary: req.body.summary } },
      { new: true, upsert: false }
    );
我使用的是猫鼬版本5.9.0
但我得到了重复的结果。请帮助我。

您需要的是
阵列过滤器
选项

有关标识符
$[]

db.saleRecord.update(
{emp_id:''},
{$set:{'summary.$[].chem_sale.$[chemsalelement].product_sale:1000},
{arrayFilters:[{'ChemsalElement.product_id':'5e3c5029ac7e0d67c3b5ae6e'}]
)

这里需要的是
阵列过滤器
选项

有关标识符
$[]

db.saleRecord.update(
{emp_id:''},
{$set:{'summary.$[].chem_sale.$[chemsalelement].product_sale:1000},
{arrayFilters:[{'ChemsalElement.product_id':'5e3c5029ac7e0d67c3b5ae6e'}]
)

emp\u id来自哪里?您能否提供saleRecordModel集合中对象的示例?@Jérôme saleRecord模型集合conatins emp_id,(ObjectID)以及上述摘要数组OK。然后您想在
chem_sale
中推送一个新对象以获得特定的
chem_id
?也,您想在汇总的所有条目中为给定的
product\u id
更新
product\u-sale
吗?如果
product\u-id
chem\u-sale
数组的给定
product\u-id
匹配,则应更新@Jérôme
product\u-sale
。@Yashwantsomsomayajula:如果您能提供您的请求和期望,那就很容易了输出(转换后的文档)…您的MongoDB版本是什么?emp_id来自哪里?您能否提供saleRecordModel集合中对象的示例?@Jérôme saleRecord模型集合conatins emp_id,(ObjectID)以及上述摘要数组OK。然后您想在
chem_sale
中推送一个新对象以获得特定的
chem_id
?也,您想在汇总的所有条目中为给定的
product\u id
更新
product\u-sale
吗?如果
product\u-id
chem\u-sale
数组的给定
product\u-id
匹配,则应更新@Jérôme
product\u-sale
。@Yashwantsomsomayajula:如果您能提供您的请求和期望,那就很容易了输出(转换文档)…您的MongoDB版本是什么?
db.saleRecord.update(
    { emp_id: '<EMP_ID>' },
    { $set: {'summary.$[].chem_sale.$[chemSaleElement].product_sale': 1000 }},
    { arrayFilters: [{ 'chemSaleElement.product_id': '5e3c5029ac7e0d67c3b5ae6e' }] }
)