Как мне вставить данные во встроенную коллекцию в mongodb

Я прочитал документацию по мангусту и монго, и у меня все еще есть проблемы с вставкой данных во встроенную коллекцию. Вот две схемы, которые у меня есть

  const  itemSchema=new mongoose.Schema({
      name:String
    });

const Item =mongoose.model("Item",itemSchema);

    const  listSchema=new mongoose.Schema({
      name:String,
      items:[itemSchema]
    });

const List=mongoose.model("List",listSchema);

Я сделал новый элемент

 const item =new Item({
  name: "apple"
});

а у меня новый список

const list =new List({
name: "fruits",
items:[]
    });

так что теперь я хотел бы вставить еще один элемент списка с именем фруктов, но я не знаю, какой параметр мне нужно использовать List.insertOne() для таргетинга в поле элементов


person Eric bian    schedule 31.07.2020    source источник


Ответы (1)


Вы спрашиваете, как добавить элемент в существующий документ, верно?

https://mongoosejs.com/docs/subdocs.html#adding-subdocs-to-arrays

https://docs.mongodb.com/manual/reference/operator/update/push/

const myFruitList = await new List({
  name: "fruits",
  items: [{name: "apple"}]
}).save();

// Add another fruit
myFruitList.items.push({name: "bannana"});
await myFruitList.save();

Или с помощью обновления

await List.updateOne(
  {name: "fruits"},
  {$push: {items: {name: "bananna"}}}
)
person GitGitBoom    schedule 31.07.2020
comment
Извините за вопрос, но не могли бы вы вкратце объяснить мне, как работает ожидание в начале? - person Eric bian; 31.07.2020
comment
Не беспокойтесь, это более простой способ разрешения промисов без обратного вызова, представленный в ES7. Скорее всего, вы сможете использовать его в своей текущей среде, просто убедитесь, что перед функцией, содержащей ваши запросы, стоит async. Подробнее читайте здесь javascript.info/async-await. - person GitGitBoom; 31.07.2020
comment
Вместо myFruitList.save().then(saveResult => {...}) await позволяет вам записать это как saveResult = await myFruitList.save() Это значительно упрощает организацию, когда вам нужно выполнять обещания одно за другим. - person GitGitBoom; 31.07.2020