Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/402.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
Javascript 使用Meteor同时执行$push和$set_Javascript_Node.js_Mongodb_Meteor - Fatal编程技术网

Javascript 使用Meteor同时执行$push和$set

Javascript 使用Meteor同时执行$push和$set,javascript,node.js,mongodb,meteor,Javascript,Node.js,Mongodb,Meteor,是否可以使用Meteor在同一操作中同时执行$push和$set 我希望它处于相同的操作中,这样一个游标。observe将不会被分为两个不同的MongoDB操作触发两次 当前,以下内容无法插入阵列: Animals.update( {_id: animal_id}, { $set: { driver_id: '', status: 'feeding' }, $push: {

是否可以使用Meteor在同一操作中同时执行
$push
$set

我希望它处于相同的操作中,这样一个
游标。observe
将不会被分为两个不同的MongoDB操作触发两次

当前,以下内容无法插入阵列:

Animals.update(
    {_id: animal_id}, 
    { 
        $set: {
            driver_id: '', 
            status: 'feeding'
        }, 
        $push: {
            feeder: Meteor.user()._id 
        }
    }   
)
要使
$push
正常工作,需要将其分为2部分:

Animals.update(
    {_id: animal_id}, 
    { $set: 
        {
            driver_id: '', 
            status: 'feeding'
        }
    }
Animals.update(
    {_id: animal_id}, 
    {
        $push: {
            feeder: Meteor.user()._id 
        }
    }   

您可以通过先提取数组,然后将其推到数组上,再将其包括在内,将这两个元素组合成一个
$set

const animal = Animals.findOne(animal_id);
let feeder = [] && animal.feeder;
feeder.push(Meteor.userId);

Animals.update(animal_id, 
    { 
        $set: {
            driver_id: '', 
            status: 'feeding'
            feeder: feeder
        }
    }   
)

可以对同一文档执行多个更新,只要这些更新不冲突(因此出现“更新中有冲突的MOD”错误)

因为
“$push”:{“bugs”:[{“name”:“bug1”,“count”:1}]}
“$inc”:{“bugs.0.count”:1}
都试图修改文档的同一部分(即“bugs”数组),所以它们发生冲突


如果每个更新都会影响文档的不同部分,则可以合并多个更新:

插入失败时,您是否看到任何错误?从mongo shell开始,它对我来说很好。他的设置/推送没有关键冲突,但仍然不起作用。