mongoose 如何在sub doc 中插入数组?

发布于 2022-09-02 19:47:31 字数 1469 浏览 9 评论 0

schema如下:

  var AccountSchema = new mongoose.Schema({
    email:     { type: String, unique: true },
    password:  { type: String},
    location: {type: [{
      name: { type: String},
      loc:{type:[Number]}
    }]},
    order:{type:[{
      date:{type: Date,default: Date.now},
      dishs:{type: [{
        shopId:{type: String},
        itemId:{type: String},
        amount:{type: Number}
      }]},
      userId:{type: String},
       comment:{type:[{
         date:{type: Date,default: Date.now},
         userId:{type: String},
         content:{type: String}
       }]} 
    }]}
  });


  

对于location,可以在node.js的router中循环下面的函数来尽心批量插入,实际上在mongoose这边是每次都单个插入的。


    var addLocation = function(accountId, locationName, coordinate, callback) {
        Account.update({_id:accountId}, {$push: {location:{
          "name" : locationName,
          "loc" : coordinate
        }}},{upsert:true},
      function (err) {
        callback(err);
    });
}

但是对于order应该怎么处理呢,因为order里面的dishs字段是一个array,我想达到这个目的:

  Account.update({_id:accountId}, {$push: {order:{
          "userId" : accountId
          "dishs" :
          for(var i=0;i<dish.length;i++){
              "shopId" = dish[i].shopId,
              "itemId" = dish[i].itemId,
              "amount" = dish[i].amount,
          }
        }}},{upsert:true},
      function (err) {
        callback(err);
    });

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文