Mongodb在更新时忽略$push。
我正在将日期/文本推送到我的用户表Mongodb在更新时忽略$push。,mongodb,mongoose,Mongodb,Mongoose,我正在将日期/文本推送到我的用户表userLog usersTable.update ( { _id: userID }, { $set: { activityDate : Math.round(new Date().getTime()/1000), $push: { userLog : { date: Math.round(new Dat
userLog
usersTable.update (
{ _id: userID },
{ $set:
{
activityDate : Math.round(new Date().getTime()/1000),
$push: {
userLog : {
date: Math.round(new Date().getTime()/1000),
text: "Foo Baaaah!!"
}
}
}
}
).exec()
但猫鼬所激发出来的只是:
Mongoose: users.update({ _id: 'torben@rudgaard.com' }, { '$set': { activityDate: 1498158837 } }, {})
有没有关于我的$push的想法?如评论中所述,
$push
操作符必须与$set
处于同一级别。它们都是,这意味着您可以按以下形式指定更新表达式:
{
<operator1>: { <field1>: <value1>, ... },
<operator2>: { <field2>: <value2>, ... },
...
}
关于vs.它完全取决于用例。如前所述,
$addToSet
不会将已包含的项添加到数组中$push
将始终添加给定元素,无论其是否存在。如注释中所述,$push
运算符必须与$set
处于同一级别。它们都是,这意味着您可以按以下形式指定更新表达式:
{
<operator1>: { <field1>: <value1>, ... },
<operator2>: { <field2>: <value2>, ... },
...
}
关于vs.它完全取决于用例。如前所述,
$addToSet
不会将已包含的项添加到数组中$push
将始终添加给定元素,无论该元素是否存在。您将推送到哪里?我看不到您试图在其中执行此操作的数组。每个数组都进入自己的文档。我的userLog是一个元素数组。我做错了吗?我也尝试了$addToSet
,但那一个也被忽略了。我需要[]括号还是?$push
应该与$set
处于同一级别,它们是不同的修饰符.update({$set:{…要更新的字段..},$push:{…某处:某物..}})
你要推到哪里?我看不到您试图在其中执行此操作的数组。每个数组都进入自己的文档。我的userLog是一个元素数组。我做错了吗?我也尝试了$addToSet
,但那一个也被忽略了。我需要[]括号还是?$push
应该与$set
处于同一级别,它们是不同的修饰符.update({$set:{…要更新的字段..},$push:{…某处:某物..}})