Ich hoffe, das Dokument ObjectId
, die gerade jetzt verwenden insertOne
einfügen.
Mit meiner Überlegung, ein Weg ist _id auf Client-Seite generieren, ist eine andere Möglichkeit, Abfrage von einem Feld mit dem Dokument angeben. Welche Methode ist besser oder haben andere?
ps: Ich weiß, ObjectId in Mongo mit Maschinen- und Zeitinformationen zu generieren.
In einem Wort, ich frage mich nur das Sprichwort von mongo ObjectId sollte auf Client oder mongod Server generieren bedeutet?Mongo Scala-Treiber erhalten _id nach der Verwendung insertOne
Antwort
Wie das MongoDB-Dokument angibt, sollten Sie, wenn Sie das änderbare Dokument verwenden, das Dokument mit der von MongoDB erstellten _id automatisch zurückholen, wenn Sie kein Dokument bereitgestellt haben.
Insert MongoDB -> See warning part
Wie Sie in Scala kennen den größten Teil der Zeit, die wir mit inmutable Objekte standardmäßig arbeiten. Dies ist eine gute Sache, weil Sie die durch die Nebenwirkungen abgeleiteten Fehler vermeiden.
Zum Beispiel, wenn Sie zwei Listen verketten, erhalten Sie eine neue Liste, und das gleiche passiert für eine Karte, wenn Sie einen Schlüssel einfügen, wird eine neue Karte zurückgegeben. Wie in anderen Sprachen als Java möglich, haben Sie nur ein Objekt (einen Zeiger), das seinen internen Status ändern würde.
Wenn Sie also das inmmutable Dokument von Mongo verwenden:
val doc: org.mongodb.scala.bson.collection.immutable.Document = Document("name" -> "MongoDB", "type" -> "database",
"count" -> 1, "info" -> Document("x" -> 203, "y" -> 102))
collection.insertOne(doc)...
"doc" wäre inmmutable (so dass Sie nicht die _id automatisch generiert durch Mongo haben).
Aber wenn Sie verwenden:
val doc: org.mongodb.scala.bson.collection.mutable.Document = Document("name" -> "MongoDB", "type" -> "database",
"count" -> 1, "info" -> Document("x" -> 203, "y" -> 102))
collection.insertOne(doc)...
Nach dem Einsetzen werden Sie das _id Feld haben in Ihrem "doc" Dokument.
Andere Art und Weise, wie Sie gesagt ist wie immer ein ObjectId mit etwas zu bieten:
val doc: Document = Document("_id" -> ObjectId(), "name" -> "MongoDB"...)
- 1. Scalatra und Mongo insertOne Fehler - java.lang.NoSuchMethodError: com.mongodb.operation.MixedBulkWriteOperation.bypassDocumentValidation
- 2. Elasticsearch mongo-connector KeyError _id
- 3. Mongo/Express Abfrage Nested _id von Query-String
- 4. Wie kann ich die Liste nach der Verwendung von Aggregat und $ in mongo wieder zusammensetzen?
- 5. wie String _id ändern Datensatz mongoid von Mongo Datenbank löschen
- 6. Sails.js mit Mongo kann von _id nicht gefunden werden
- 7. Mongo-Import: Datei mit mehreren Update-Abfragen für verschiedene "_id"
- 8. erhalten MongoBinData Wert von Mongo Shell
- 9. mongodb upsert von Java: wie _id des vorhandenen Objekts erhalten?
- 10. Nested Mongo Abfrage
- 11. Mongo Suche nach Wert der Schlüssel in verschachtelter Array
- 12. Abrufen von Gruppe nach Ergebnis mit Arrays in Mongo
- 13. Meteor Mongo diesen Wert erhalten
- 14. mongoexport ohne _id Feld
- 15. Java: falsche Zeichenfolge.length() erhalten nach der Verwendung von trim()
- 16. Wie erhalten Sie vorhandene Sitzungsattribute nach der Verwendung von sendRedirect()?
- 17. Mongo Abfragedokument
- 18. Mongo DB: Alle Dokumente nach dem letzten bekannten einlesen
- 19. Mongodb C# InsertOne() - Wie behandelt man Ausnahme
- 20. FutureTask nach der Verwendung bereinigen
- 21. Richtiger Weg, nach MongoDB-Einträgen nach '_id' im Knoten
- 22. Mongo Aggregat $ Summe Verhalten
- 23. Führen Anzahl der Dokumente mongo db nach der Aggregation
- 24. Wie erhalten, bevor Limit zählt in der Mongo Aggregation Pipeline
- 25. Version der Mongo-Instanz mit Java-Treiber erhalten
- 26. Mongo Suche nach Teilzeichenfolge in einem beliebigen Feld
- 27. Löschen Sie alle Dokumente älter als ein Datum mit _id in Mongo mit Mgo
- 28. Mongo db in einer anderen Abfrage Ergebnis der Abfrage mit $ Verwendung in
- 29. MongoDB erhalten verschiedene Artikel nach
- 30. Ajax und Mongodb, verwenden _id
Wie mutable.Document mit insertOne Methode verwenden? – LoranceChen
Achten Sie darauf, dass die Einfügung im neuen Treiber asynchron ist. Sie müssen also das Observable abonnieren oder in ein Future konvertieren und es verarbeiten ... – pianista
Warum die Methode collection.insertOne() kein veränderbares Dokument als Parameter in scala verwendet Treiber 1.1.1? – LoranceChen