Javascript 使用Meteor同时执行$push和$set
是否可以使用Meteor在同一操作中同时执行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: {
$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开始,它对我来说很好。他的设置/推送没有关键冲突,但仍然不起作用。