node.jsを使用してmongodbに配列を挿入する方法

ケビン

私はのような配列を持ってい[ 570dec75cf30bf4c09679deb, 56fe44836ce2226431f5388f ]ます。今、私は次のnotificationsような名前の新しいコレクションにこれを挿入したい

{
  "_id": ObjectId("57bd39c9734ff3602a312b33"),
  "userId": ObjectId("570dec75cf30bf4c09679deb") 
}

and

{
  "_id": ObjectId("57bd39c8734ff3602a312b32"),
  "userId": ObjectId("56fe44836ce2226431f5388f ") 
}

これを挿入するためにnode.jsにクエリを記述しましたが、配列の最後の要素をこのように2回挿入します

{
  "_id": ObjectId("57bd39c9734ff3602a312b33"),
  "userId": ObjectId("56fe44836ce2226431f5388f ") 
}

and

{
  "_id": ObjectId("57bd39c8734ff3602a312b32"),
  "userId": ObjectId("56fe44836ce2226431f5388f ") 
}

私がこのように書いたクエリ

app.js

router.post('/creatList', function(req,res){
    console.log(req.body.email);
    var emails = req.body.email;

    if(req.body.wData.wishListType == 'Shared'){
        var findUsers = function(db, callback) {
            var cursor;
            cursor = db.collection('users').find({email: { $in: emails }})

            cursor.toArray(function(err, docs){
                if(err){
                    callback(new Error("Some problem"));
                } else {
                    callback(null,docs);
                } 
            });     
        };

        MongoClient.connect(config.database, function(err, db) {
            assert.equal(null, err);
            findUsers(db, function(err,docs) {
                db.close();
                console.log(docs);

                for(var key in docs){
                    console.log(key);
                    var ids = docs[key]._id;
                    console.log(ids);

                    var insertDocument = function(db, callback) {
                        db.collection('notifications').insert({
                            "userId" : ids,
                        },function(err, result) {
                            assert.equal(err, null);
                            console.log("Inserted a document into the notifications collection.");
                            callback();
                        });
                    };

                    MongoClient.connect(config.database, function(err, db) {
                        assert.equal(null, err);
                        insertDocument(db, function() {
                            db.close();
                        });
                    });
                }
            });
        }); 
      });
ウェイク

基本的に、users.find()からの結果を再マップして、通知コレクションのスキーマと一致させる必要があります。これは機能するはずです:

var docsToInsert = docs.map(function (doc) {
        // this assumes your users collection has an _id that you actually want to use as the reference for you notifications.userId field
        // actually, you probably want "return {"userId": ObjectID(doc._id)};" since you are using the native mongodb api
        return { "userId": doc._id };
});

したがって、残りの部分を少し単純化すると、次のようになります。

router.post('/creatList', function (req, res) {
    console.log(req.body.email);
    var emails = req.body.email;

    if (req.body.wData.wishListType == 'Shared') {
        var findUsers = function (db, callback) {
            var cursor;
            cursor = db.collection('users').find({ email: { $in: emails } });

            cursor.toArray(function (err, docs) {
                if (err) {
                    callback(new Error("Some problem"));
                } else {
                    callback(null, docs);
                }
            });
        };

        MongoClient.connect(config.database, function (err, db) {
            assert.equal(null, err);
            findUsers(db, function (err, docs) {
                db.close();
                console.log(docs);

                var docsToInsert = docs.map(function (doc) {
                    // this assumes your users collection has an _id that you actually want to use as the reference for you notifications.userId field
                    // actually, you probably want "return {"userId": ObjectID(doc._id)};" since you are using the native mongodb api
                    return { "userId": doc._id };
                });

                MongoClient.connect(config.database, function (err, db) {
                    assert.equal(null, err);
                    db.collection("notifications").insert(docsToInsert, function (err, result) {
                        if (err) {
                            // handle the err however you like 
                            throw err;
                        }
                        db.close();
                    });
                });
            });
        });
    }
});

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Node.Jsを使用してMongoDBに配列を挿入または更新するにはどうすればよいですか?

分類Dev

Node.jsドライバーを使用してmongoDBに配列を複数回挿入するにはどうすればよいですか?

分類Dev

Node.jsを使用してMongodbに多くのレコードを挿入する正しい方法

分類Dev

Node.jsの列として配列を挿入します

分類Dev

Node.jsが配列内に配列を挿入しているNeo4j

分類Dev

express、Node.js、MongoDBを使用して配列を追加します

分類Dev

Node.js は readline を使用して配列に入力し、使用します

分類Dev

node.jsを使用してMySQLにレコードを挿入する

分類Dev

ドキュメントを検索し、Node.JSMongooseを使用してMongoDBの配列に値を挿入します

分類Dev

Node / Express JSを使用してMySQLテーブルに動的情報を挿入する方法

分類Dev

node.jsとcloudflareワーカーを使用して既存のHTML応答にJavaScriptを挿入する方法

分類Dev

Node.jsでmongooseを使用してJSONをmongoDBに挿入できない

分類Dev

Node.jsを使用してMongodbにネストされた挿入

分類Dev

Node.jsでreadlineを使用して、すべての入力行を配列に入れるにはどうすればよいですか?

分類Dev

node.jsコードを使用してスクリプトを挿入する方法は?

分類Dev

mongodbに挿入するnode.js

分類Dev

node.jsを使用してsqlite3に一度に複数の依存テーブルを挿入する

分類Dev

node.jsを使用してmySQLに一括挿入するにはどうすればよいですか?

分類Dev

Node.jsを使用してAngularからMySQLDATETIME列に日付を挿入するにはどうすればよいですか?

分類Dev

node.jsを使用してMySqlに一括挿入

分類Dev

ExpressとNode.jsを使用してMySQLにレコードを挿入する際の問題

分類Dev

KeyUpを使用してnode.jsに通知を入力する

分類Dev

node.jsを使用してmongoDBで_Idで検索する方法

分類Dev

配列をhtmlからnode.jsに送信し、次にmongodbに送信する方法は?

分類Dev

mongodb(node.js)を使用してコレクション内のすべての値の配列を作成する方法

分類Dev

node-postgresクエリ文字列でUNNESTを使用して、配列を複数の行として挿入するための構文

分類Dev

Node.jsを使用してMYSQLに挿入するための日付のフォーマット

分類Dev

Node.jsを使用してmysqlに一括挿入することはできません

分類Dev

Node.js MongoDBドライバーでlong / BigIntを挿入する方法は?

Related 関連記事

  1. 1

    Node.Jsを使用してMongoDBに配列を挿入または更新するにはどうすればよいですか?

  2. 2

    Node.jsドライバーを使用してmongoDBに配列を複数回挿入するにはどうすればよいですか?

  3. 3

    Node.jsを使用してMongodbに多くのレコードを挿入する正しい方法

  4. 4

    Node.jsの列として配列を挿入します

  5. 5

    Node.jsが配列内に配列を挿入しているNeo4j

  6. 6

    express、Node.js、MongoDBを使用して配列を追加します

  7. 7

    Node.js は readline を使用して配列に入力し、使用します

  8. 8

    node.jsを使用してMySQLにレコードを挿入する

  9. 9

    ドキュメントを検索し、Node.JSMongooseを使用してMongoDBの配列に値を挿入します

  10. 10

    Node / Express JSを使用してMySQLテーブルに動的情報を挿入する方法

  11. 11

    node.jsとcloudflareワーカーを使用して既存のHTML応答にJavaScriptを挿入する方法

  12. 12

    Node.jsでmongooseを使用してJSONをmongoDBに挿入できない

  13. 13

    Node.jsを使用してMongodbにネストされた挿入

  14. 14

    Node.jsでreadlineを使用して、すべての入力行を配列に入れるにはどうすればよいですか?

  15. 15

    node.jsコードを使用してスクリプトを挿入する方法は?

  16. 16

    mongodbに挿入するnode.js

  17. 17

    node.jsを使用してsqlite3に一度に複数の依存テーブルを挿入する

  18. 18

    node.jsを使用してmySQLに一括挿入するにはどうすればよいですか?

  19. 19

    Node.jsを使用してAngularからMySQLDATETIME列に日付を挿入するにはどうすればよいですか?

  20. 20

    node.jsを使用してMySqlに一括挿入

  21. 21

    ExpressとNode.jsを使用してMySQLにレコードを挿入する際の問題

  22. 22

    KeyUpを使用してnode.jsに通知を入力する

  23. 23

    node.jsを使用してmongoDBで_Idで検索する方法

  24. 24

    配列をhtmlからnode.jsに送信し、次にmongodbに送信する方法は?

  25. 25

    mongodb(node.js)を使用してコレクション内のすべての値の配列を作成する方法

  26. 26

    node-postgresクエリ文字列でUNNESTを使用して、配列を複数の行として挿入するための構文

  27. 27

    Node.jsを使用してMYSQLに挿入するための日付のフォーマット

  28. 28

    Node.jsを使用してmysqlに一括挿入することはできません

  29. 29

    Node.js MongoDBドライバーでlong / BigIntを挿入する方法は?

ホットタグ

アーカイブ