簡體   English   中英

Mongoose:將對象插入子文檔數組

[英]Mongoose: insert object into a sub-document array

我正在嘗試為特定用戶的特定活動名稱將時間對象插入到時間數組中。 例如,如果用戶是“someuser”並且我想為吉他的時間添加一個時間,我不確定該怎么做。

{
  username: "someuser",
  activities: [
    {
      name: "guitar",
      times: []
    },
    {
      name: "code",
      times: []
    }
  ]
}, {
  username: "anotheruser",
  activities: []
}

這是目前我擁有的功能,我無法弄清楚我做錯了什么,任何幫助將不勝感激:

function appendActivityTime(user, activityName, newRange) {
  User.updateOne(
    {username: user, 'activities.name': activityName},
    { $push: {'activities.$.times': {newRange}},
    function (err) {
      if (err) {
          console.log(err);
        } else {
          console.log("Successfully added time range: " + newRange);
        }
    }}
  );
}

appendActivityTime("someuser", "guitar", rangeObject);

我試過你的嘗試,它對我有用:

db.getCollection("test").updateOne(
  { username: "someuser", "activities.name": "guitar" },
  { $push: { "activities.$.times": { from: ISODate(), to: ISODate() } } } //Don't worry about ISODate() in node.js use date objects
)

結果:

{ 
    "_id" : ObjectId("5f6c384af49dcd4019982b2c"), 
    "username" : "someuser", 
    "activities" : [
        {
            "name" : "guitar", 
            "times" : [
                {
                    "from" : ISODate("2020-09-24T06:15:03.578+0000"), 
                    "to" : ISODate("2020-09-24T06:15:03.578+0000")
                }
            ]
        }, 
        {
            "name" : "code", 
            "times" : [

            ]
        }
    ]
}

我建議你使用的是arrayFilter ,它們更精確,當你習慣它們時,它們變得非常方便

如果您對更新嵌套文檔沒有信心,請讓貓鼬進行查詢。

讓文檔 = 等待 Model.findOne ({ });

document.activity = new_object;

等待 document.save();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM