one呼び出しのみでJSONオブジェクトの配列をmongodbに保存する方法はありますか?何かのようなもの:
schemeObject.save(array_of_json_object, callback);
mongoosejs
を使用しています
Mongooosejsではそれは不可能だと思います。ただし、ネイティブでサポートされているmongodbのBATCH挿入を使用できます。
便利なリンク:
http://www.mongodb.org/display/DOCS/Inserting#Inserting-Bulkinserts
https://groups.google.com/forum/#!msg/mongoose-orm/IkPmvcd0kds/bZuYCN_orckJ
MongooseJSで一括挿入する方法があります。この質問に対する回答があったため、それが新機能かどうかはわかりませんが、誰かが検索からここに来たのなら、彼らはその方法を知っているはずです。
var array = [{ type: 'Jelly bean' }, { type: 'snickers' }];
Candy.create(array, function (err, jellybean, snickers) {
if (err) // ...
});
ここにドキュメントがあります: http://mongoosejs.com/docs/api.html#model_Model.create
これはマングースでも機能します
Laptop.insertMany(laptopData, function (err, laptop) {
if (err) {
console.log(err);
};
console.log(laptop);
});
私が使用した別の回避策。 promiseでmongooseを使用している場合は、 [〜#〜] q [〜#〜] を使用してこれを実行できます。
以下のコードを使用して、Qをmongooseのデフォルトのプロミスとして使用できます。
_const mongoose = require('mongoose');
mongoose.Promise = require('q').Promise;
_
次に、以下のようにドキュメントの配列を保存できます。 users
変数で示したUserモデルの配列を格納しているとしましょう。
_Q
.all(users.map(curr => curr.save()))
.then((results) => { //do something })
.catch((err) => { //handle error })
_
.save()
はq
promiseを返し、配列map
関数を使用して、ユーザーモデル配列を使用してpromise配列を作成します。
このようなものはどうですか?私はそれが配列全体をループすることを知っています..このためにBig Oについて私に尋ねないでください..おそらく挿入する最良の方法ではありませんが、ある種の初期データダンプだけで機能します。
var arr = // array of objects;
res = [];
arr.forEach(function (item) {
item.save(function (err) {
res.Push(err);
if (res.length === arr.length)
{
// Done
}
});
});