gpt4 book ai didi

node.js - mongodb 和 mongoose 之间的行为不同?

转载 作者:太空宇宙 更新时间:2023-11-04 00:52:51 27 4
gpt4 key购买 nike

在 mongo shell 中我可以这样做:

db.getCollection('usercourses').update({
_id:ObjectId("54bee7c6ababf28b4ea5a07f")},
{
$unset:{
'steps.0.topic':''
}
},
{strict:false})

它将从找到的文档中的数组内的对象中删除“主题”字段。

但是当我在 Mongoose 中这样做时:

function() {
return UserCourses.findQ()
.then(function(uCourse){
return Q.all(uCourse.map(worker))
}).catch(function(error) {
console.log(error);
});
}

function worker(uCourse) {
return Q.all(uCourse.steps.map(
function(step,i){
var field1 = 'steps.'+i+'.topic';

return UserCourses.updateQ({_id:uCourse._id},
{
$unset:{field1:''},
},
{strict:false});
}
))
}

没有任何反应。

为什么?

最佳答案

因为您尝试取消设置名为 field1 的字段(因为 ES5 没有 computed property names ):

$unset : { field1 : '' }

相反,您需要这样做:

var obj = {};
obj['steps.'+i+'.topic'] = '';
...
$unset : obj

关于node.js - mongodb 和 mongoose 之间的行为不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31524788/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com