sql >> データベース >  >> NoSQL >> MongoDB

MongoDBは、外部キーを使用してフィールドを別のコレクションにコピーします

    テストの設定にはいくつかの問題があります:

    • フィールド名のケースが一致しません(colorを参照しています Colorの代わりに コピーする場合)
    • ターゲットコレクションで一致する外部キーの例は1つだけです:ObjectId('515f7db83f71d6bcb1c41a48')
    • 更新は、「外部キー」に一致する最初のドキュメントにのみ影響します。これは1:1の関係では問題ありませんが、1:多くではありません

    上記を考慮した修正例(一致しないキーを除く):

    db.test1.User.find().forEach( 
        function(x) {
            db.test2.Car.update(
                // query 
                { userID: x._id },
    
                // update 
                { $set: { color: x.Color} },
    
                // options:
                { "multi" : true } // Update all matching documents
            );
        }
    );
    

    その結果、{color:blue}が設定されます サンプルドキュメントで実際に一致する唯一の外部キーの場合:

    db.test2.Car.find()
    {
        "_id" : ObjectId("515f84883f71d6bcb1c41a55"),
        "speed" : 202,
        "userID" : ObjectId("515f7db83f71d6bcb1c41a49")
    }
    {
        "_id" : ObjectId("515f84883f71d6bcb1c41a56"),
        "speed" : 193,
        "userID" : ObjectId("515f7db83f71d6bcb1c41a4a")
    }
    {
        "_id" : ObjectId("515f84883f71d6bcb1c41a54"),
        "color" : "blue",
        "speed" : 291,
        "userID" : ObjectId("515f7db83f71d6bcb1c41a48")
    }
    


    1. 2016年の流星生産データベースへのアクセス

    2. 配列に存在する場合、MongoDB挿入ドキュメントまたはインクリメントフィールド

    3. クエリ結果(単一のドキュメント)を変数に格納する方法は?

    4. Mongoid-参照ドキュメントによるクエリ