Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/34.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 使用node.js中的mongoose条件更新数组_Javascript_Node.js_Mongodb_Mongoose - Fatal编程技术网

Javascript 使用node.js中的mongoose条件更新数组

Javascript 使用node.js中的mongoose条件更新数组,javascript,node.js,mongodb,mongoose,Javascript,Node.js,Mongodb,Mongoose,我正在尝试更新一个MongoDB集合,我已经为使用Mongoose创建了一个模式。我的目标是删除一个称为“报警”的数组中小于(过去)当前时间的所有元素 这是我的猫鼬模式: var mongoose = require('mongoose'); var ReminderSchema = new mongoose.Schema({ firstName: String, lastName: String, phone: Number, email: String,

我正在尝试更新一个MongoDB集合,我已经为使用Mongoose创建了一个模式。我的目标是删除一个称为“报警”的数组中小于(过去)当前时间的所有元素

这是我的猫鼬模式:

var mongoose = require('mongoose');

var ReminderSchema = new mongoose.Schema({
    firstName: String,
    lastName: String,
    phone: Number,
    email: String,
    medication: String,
    alarms: [Date]
});

module.exports = mongoose.model('Reminder', ReminderSchema); 
这里是更新。我正在尝试删除所有小于当前日期的警报

var date = new Date();
var Reminder = require('./models/Reminders.js');

//remove ALL alarms that are are before current time
Reminder.update({alarms: {$lte: date}}, {$pullAll: {alarms: {$lte: date}}}, function(err, updated){
    if(err){
         console.log(err);
     }
     else {
         console.log(updated);
     }
 });
我当前遇到以下错误:

{ [MongoError: $pullAll requires an array argument but was given a Object]
name: 'MongoError',
message: '$pullAll requires an array argument but was given a Object',
driver: true,
index: 0,
code: 2,
errmsg: '$pullAll requires an array argument but was given a Object' }

有什么想法吗?

这个
$pullAll
接收一个数组而不是一个对象:


只需将$pullAll替换为$pullThis即可。谢谢,这就行了。非常感谢你。
{ $pullAll: { <field1>: [ <value1>, <value2> ... ], ... } }
Reminder.update({alarms: {$lte: date}},{$pull:{alarms: { $lte : new Date()}}}, 
 function(err, updated){
if(err){
     console.log(err);
 }
 else {
     console.log(updated);
 }
});