如何使用$ push(Mongoose)在数组中推送多个对象

时间:2019-10-07 21:46:24

标签: arrays mongoose mongoose-schema

将多个对象推入数组时遇到很多麻烦。

我尝试了这段代码的几种不同变体,要么最终将对象直接推到db,要么只推了数组的最后一个对象

这是我当前正在尝试的代码,该代码可以正常工作,但仅推送最后一个对象(在本例中为星期三)。

  collection.findOneAndUpdate(
  { name: 'yyy' }, 
  { $push: { schedule: monday, schedule: tuesday, schedule: wednesday}},
 function (error, success) {
       if (error) {
           console.log("error");
           console.log(error);
       } else {
           console.log("success");
           console.log(success);
       }
});

我尝试过

collection.findOneAndUpdate(
  { name: 'yyy' }, 
  { $push: { schedule: monday, tuesday, wednesday}}

它只是将星期二和星期三推到主要位置,而不是将它们放置在schedule数组中。

这是我用于计划的模式

  schedule: [
    {
        day: { type: String, default: ""},
        closed: { type: Boolean, default: false },
        start: { type: Number, default: 0},
        startap: { type: String, default: "AM"},
        end: { type: Number, default: 0},
        endap: { type: String, default: "PM"}
    }
  ]

我要推送到时间表数组的日期变量的示例和例子

var monday = { 
            day:"Monday", 
            closed: false, 
            start:"700", 
            startap:"AM", 
            end:"1900", 
            endap:"PM"
};

很显然,我可以运行7次并更新代码,但是我觉得有一种更有效的方法。

1 个答案:

答案 0 :(得分:2)

您可以通过将$push$each一起使用来Append Multiple Values to an Array。 示例:

collection.findOneAndUpdate(
  { name: 'yyy' }, 
  { $push: { schedule: {$each: [monday, tuesday, wednesday]}}}...