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:{…某处:某物..}})