2016-04-10 15 views
0

Ich begann vor kurzem mit MongoDB zu spielen und ich erstellte eine kleine Datenbank für Lernzwecke.Hinzufügen von Objekten in Objekt in MongoDB

benutzte ich dieses ein Array mit Elementen

> var myitems = db.items.find({ $or: [ {"title": "item 1"}, {"title": "item 2"}, {"title": "item 3"}] }) 
> myitems 
{ "_id" : ObjectId("570a841a8b71efa49d08fdda"), "title" : "item 1", "date" : ISODate("2016-04-10T16:49:30.242Z") } 
{ "_id" : ObjectId("570a850c8b71efa49d08fddb"), "title" : "item 2", "date" : ISODate("2016-04-10T16:53:32.554Z") } 
{ "_id" : ObjectId("570a85128b71efa49d08fddc"), "title" : "item 3", "date" : ISODate("2016-04-10T16:53:38.554Z") } 

Ich habe auch eine Liste Objekt zu erhalten

{ 
    "_id": int, 
    "total_items": int, 
    "items": [ 
     "item_id": int 
    ] 
} 

ich meine items Array in list Sammlung Einträge eingefügt werden soll. Etwas wie dieses:

> db.lists.insert({ "total_items": 5, "items": { $addToSet: myitems} }) 

Natürlich hat es nicht funktioniert. Und das ist, was ich suche. Eine Möglichkeit, die IDs aus meiner items Liste zu bekommen und sie zu verwenden, um einen neuen Eintrag zu lists einzufügen.

Wie kann ich das tun?

+0

Ihre Frage ist schwer zu verstehen. Kannst du bitte etwas ausarbeiten? – styvane

+0

@ user3100115 Welcher Teil meiner Frage macht es Ihnen schwer zu verstehen? Keine Ironie hier, ich versuche nur, die verschleierten Teile zu finden, um sie zu reparieren :) – TheCrafter

+0

Sie sagten * Ich möchte meine Artikel-Liste in Listen einfügen * Ich kenne die Liste nicht, über die Sie sprechen, auch ich habe es versäumt zu sehen die erwartete Ausgabe. Gibt es auch eine Beziehung zwischen den 'Items' und den' list's? – styvane

Antwort

0

Sie verwenden den Befehl insert, wenn Sie den Befehl update verwenden sollten.

db.lists.updateOne({ 
    _id: "abc" 
}, { 
    $addToSet: { 
     items: episodes 
     } 
}) 

Vollständige Dokumentation here.

+0

Die Tabelle "Listen" ist leer. Kann ich den Aktualisierungsbefehl in einer leeren Liste verwenden? Oder du sagst, ich sollte die 'insert' verwenden, um einen Dummy-Listeneintrag hinzuzufügen und dann das' update', um es zu konfigurieren? – TheCrafter

+0

Nein, Sie müssen das Feld nicht zuerst erstellen, es wird erstellt, wenn es nicht existiert. – BanksySan

+0

Nun, ich habe es gerade versucht. Es funktioniert nicht Ich bekomme eine Ausnahme. '016-04-10T23: 08: 16.545 + 0300 E QUERY [thread1] Warnung: Protokollzeile versucht (14kB) über maximale Größe (10kB), Drucken Anfang und Ende ... Uncaught Ausnahme: WriteError ({' – TheCrafter

Verwandte Themen