@@ -39,25 +39,30 @@ options::bulk_write make_bulk_write_options(const options::insert& insert_option
3939} // namespace
4040
4141insert_many_builder::insert_many_builder (const options::insert& options)
42- : _writes{make_bulk_write_options (options)}, _inserted_ids{}, _index{0 } {};
42+ : _writes{make_bulk_write_options (options)}, _inserted_ids{} {
43+ }
4344
4445void insert_many_builder::operator ()(const bsoncxx::document::view& doc) {
46+ bsoncxx::builder::stream::document id_doc;
4547 if (!doc[" _id" ]) {
46- bsoncxx::builder::stream::document new_document;
47- new_document << " _id" << bsoncxx::oid () << bsoncxx::builder::stream::concatenate (doc);
48+ id_doc << " _id" << bsoncxx::oid{};
4849
50+ bsoncxx::builder::stream::document new_document;
51+ new_document << bsoncxx::builder::stream::concatenate (id_doc.view ())
52+ << bsoncxx::builder::stream::concatenate (doc);
4953 _writes.append (model::insert_one{new_document.view ()});
50- _inserted_ids.emplace (_index++, new_document.view ()[" _id" ]);
5154 } else {
55+ id_doc << " _id" << doc[" _id" ].get_value ();
56+
5257 _writes.append (model::insert_one{doc});
53- _inserted_ids.emplace (_index++, doc[" _id" ]);
5458 }
59+ _inserted_ids.append (id_doc.view ());
5560};
5661
5762stdx::optional<result::insert_many> insert_many_builder::insert (collection* col) const {
5863 auto val = col->bulk_write (_writes).value ();
5964 result::bulk_write res{std::move (val)};
60- stdx::optional<result::insert_many> result{{std::move (res), std::move ( _inserted_ids)}};
65+ stdx::optional<result::insert_many> result{{std::move (res), _inserted_ids. view ( )}};
6166 return result;
6267};
6368
0 commit comments