insertOne
に今すぐ挿入するObjectId
文書を入手したいと思います。
私の考えでは、クライアント側で_idを生成する方法があります。別の方法は、ドキュメントで指定されたフィールドによるクエリです。どちらの方法が優れているの?
ps:私はmongoのObjectIdが機械と時間情報で生成されることを知っています。
言い換えれば、私は、ObjectIdがクライアントまたはmongodサーバー上で生成するはずのmongoのことを意味するのでしょうか?mongo scalaドライバ使用後に_idを取得するinsertOne
2
A
答えて
1
MongoDBドキュメントで指定されているように、Mutableドキュメントを使用する場合は、MongoDBが作成した_idを持つドキュメントを自動的に取得する必要があります。
Insert MongoDB -> See warning part
あなたはScalaで、我々は、デフォルトでinmutableオブジェクトを操作している時間の大部分を知っているよう。これは副作用によって引き起こされた失敗を避けるために良いことです。
たとえば、2つのリストを連結すると、新しいリストが取得され、キーを挿入すると同じようにMapが発生し、新しいMapが返されます。 Javaのように他言語のopossiteとしては、内部状態を変更するオブジェクト(ポインタ)が1つしかありません。
ですから、モンゴのinmmutable文書を使用する場合:
は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」(あなたがモンゴによって自動生成_idを持つことになりません)inmmutableだろう。
しかし、あなたが使用している場合:挿入後
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)...
を、あなたの "DOC" ドキュメントに_idフィールドを持つことになります。
insertOne方法でmutable.Documentを使用する方法val doc: Document = Document("_id" -> ObjectId(), "name" -> "MongoDB"...)
関連する問題
- 1. ScalatraとMongoのinsertOneエラー - java.lang.NoSuchMethodError:com.mongodb.operation.MixedBulkWriteOperation.bypassDocumentValidation
- 2. クライアント側のmongo _idの日付を取得します
- 3. Scala mongoドライバ。リスト[ドキュメント]を単一のドキュメントに変換する
- 4. Mongoドライバを使用してMongo Atlasにファイルをアップロード
- 5. phpを使用してmongo dbから "_id"に基づいてレコードを取得します
- 6. Meteor.methodコールの後に_idを取得する
- 7. Python mongoengine - 保存後に_idを取得する
- 8. mongo-delphi-driverで特定の_idを持つドキュメントを取得する
- 9. Casbah Scala MongoDBドライバ - DBObjectからデータを取得する
- 10. ビルドmongo C++ドライバ
- 11. mongo-cxxドライバでgridfsを使用する方法
- 12. javaドライバを使用してmongo dbからネストされたドキュメントを取得する
- 13. mongooseで_idを取得
- 14. MMS _id [アンドロイドアプリケーション]を取得する
- 15. c#mongoドライバのインストール
- 16. Scala - Casbah MongoDBを使用して最後に挿入されたObjectIdを取得
- 17. s3aを使用してドライバとエグゼキュータでスパークジャックを取得する
- 18. MongoDB Scalaドライバ - BSONドキュメントのレンダリング
- 19. java.util.loggingプロパティを使用してmongo javaドライバのログを制御するには
- 20. mongo C#ドライバを使用してアレイ/リスト内のアイテムを更新するには?
- 21. Mongoコレクションの最後のアイテムの値を取得する方法
- 22. ノードを使用してMongoErrorを取得するmongoコンテナに接続する
- 23. $ http POSTをAngularで使用するときにmongo ObjectIDを取得する
- 24. 弾性検索エンジンmongo-connector KeyError _id
- 25. サブ文書配列のMongo _id
- 26. 10G公式C#ドライバを使用したMongo geo結果
- 27. 内部パイプラインを使用したMongo javaドライバ検索
- 28. は、_idを使用して参照しながらパフォーマンスに最適ですか? _idを使用して取得中にエラーが発生するINVALID OBJECT ID
- 29. node.jsのmongo dbのinsertOne()write concernパラメータに下線を付けてください。
- 30. ソースから値を取得するためにSelenium Webドライバを使用する
:
その他の方法あなたが言ったように、常にのようなものを使用したObjectIdを提供するのですか? – LoranceChen
新しいドライバでは挿入が非同期であるため、Observableに登録したり、Futureに変換して処理したりする必要があります。 – pianista
collection.insertOne()メソッドがscalaのパラメータとして可変文書を消費しないのはなぜですか?ドライバ1.1.1? – LoranceChen