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

MongoDBで配列の順序を変更するにはどうすればよいですか?

    @ blakes-sevenが言ったように、それを行うには2つの方法があります:

    取得、更新、プッシュ

    db.images.find({ _id: '' }, { images : 1 })
    .then(function(img) {
      var tmpImg = img.images[0];
      img.images[0] = img.images[1];
      img.images[1] = tmpImg;
    
      db.images.update({ _id: img._id }, { $set: { images: img.images } });
    })
    

    直接更新 (クライアントに画像があり、インデックスを知っている場合)、 $ positionを使用します

    db.images.update({ _id: '' }, { $push: { images: { $each: ['img2'] }, $position: 0 } } } )
    .then(function() {
      db.images.update({ _id: '' }, {$unset: {'images.2': 1}})
    });
    

    https://docs.mongodb.org/manual/reference/operator/update/position/

    ただし、仮想順序を例として使用して、画像の保存方法を再設計する必要があると思います。

    {
      images: [
        { base64: 'img1', order: 0, _id: 'img1' },
        { base64: 'img2', order: 1, _id: 'img2' },
        { base64: 'img3', order: 2, _id: 'img3' }
      ]
    }
    

    このように、仮想順序インデックスを使用して画像を並べ替えたり、_idのみを使用して画像を更新したり、すべてのimg2の順序を変更したり、画像を削除または置換したりしてコレクション全体を更新したりできます。




    1. 1回の呼び出しで複数のMongoDBドキュメントを作成および更新します

    2. mongo.so:>未定義のシンボル:0行目の不明のphp_json_encode。インストール後、php用のmongoドライバー

    3. PyMongo 3がServerSelectionTimeoutErrorを発生させるのはなぜですか?

    4. MongoDBのバックアップと復元