/ / mongo scala ovládač dostane _id po použití insertOne - mongodb, scala, objectid

mongo scala ovládač dostane _id po použití insertOne - mongodb, scala, objectid

Dúfam, že dostanem dokument ObjectId ktoré sa práve používajú insertOne.
Podľa môjho názoru je cesta generovaná _id na strane klienta, ďalším spôsobom je dotaz pomocou zadávacieho poľa s dokumentom. Ktorá metóda je lepšia alebo máte iné?
PS: Viem, že ObjectId v mongo generuje s informáciami o strojoch a čase.
Jedným slovom, som len diviť, že hovor o mongo ObjectId by mal generovať na klientovi alebo mongod server znamená?

odpovede:

1 pre odpoveď č. 1

Ako dokument MongoDB špecifikuje, ak používate prenosný dokument, mali by ste vrátiť dokument s _id vytvoreným MongoDB automaticky, ak ho neposkytnete.

Vložiť MongoDB -> Pozri varovnú časť

Ako viete v programe Scala väčšinu času pracujeme s implicitnými objektmi. To je dobré, pretože vyhnite sa závadám spôsobeným vedľajšími účinkami.

Napríklad, ak spojíte dva zoznamy, vyzíska nový zoznam a to isté sa stáva aj pri vkladaní kľúča do mapy a vráti sa nová mapa. Ako oposite v iných jazykoch ako Java, budete mať len jeden objekt (ukazovateľ), ktorý by zmenil jeho vnútorný stav.

Takže ak použijete nezmeniteľný dokument spoločnosti Mongo:

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" by bolo nemožné (takže nemáte _id autogenerovanú spoločnosťou Mongo).

Ak však používate:

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)...

Po vložení budete mať vo vašom dokumente "doc" pole _id.

Iným spôsobom, ako ste povedali, je poskytnúť vždy ObjectId pomocou niečoho ako:

val doc: Document = Document("_id" -> ObjectId(), "name" -> "MongoDB"...)