2017-12-21 11 views
1

sort_orderキーを使って、スライドサブドキュメント内のオブジェクトの順序を変更したいとします。mongoコレクションオブジェクトの要素キーを持つオブジェクト配列内のオブジェクトの順序を変更する

例:タイトル付きスライドを移動したいA3上記A2です。すなわち、 A3(3)sort_order値がに変更され、それは、A2のに変更され、その逆下降の場合です。

操作方法

以下はdbオブジェクトです。この方法で

{ 
    "_id" : ObjectId("5a3b8cc68884dd1140a9a5b8"), 
    "title" : "Sort Test", 
    "user_id" : ObjectId("59e08e45f081170f582e95cc"), 
    "status" : "active", 
    "slides" : [ 
     { 
      "_id" : ObjectId("5a3b8cc68884dd1140a9a5b9"), 
      "sort_order" : 0, 
      "content" : "Sort Test", 
      "title" : "Sort Test" 
     }, 
     { 
      "_id" : ObjectId("5a3b8cda8884dd1140a9a5ba"), 
      "sort_order" : 1, 
      "content" : "Text Contents here...", 
      "title" : "A1" 
     }, 
     { 
      "_id" : ObjectId("5a3b8ce48884dd1140a9a5bb"), 
      "sort_order" : 2, 
      "content" : "Text Contents here...", 
      "title" : "A2" 
     }, 
     { 
      "_id" : ObjectId("5a3b8cec8884dd1140a9a5bc"), 
      "sort_order" : 3, 
      "content" : "Text Contents here...", 
      "title" : "A3" 
     }, 
     { 
      "_id" : ObjectId("5a3b8cec8884dd1140455bc"), 
      "sort_order" : 4, 
      "content" : "Text Contents here...", 
      "title" : "A4" 
     } 
    ], 
    "description" : "Sort Test", 
    "__v" : 0 
} 

答えて

1

あなたは同じ要素とあなたが求めるものを使用して新しい配列を作成することができ、(私はあなたが何を求めていると思います)に切り替え。 その後、新しい配列でDBのスライドフィールドを更新するだけです。

var dbObject = { 
    "_id" : ObjectId("5a3b8cc68884dd1140a9a5b8"), 
    "title" : "Sort Test", 
    "user_id" : ObjectId("59e08e45f081170f582e95cc"), 
    "status" : "active", 
    "slides" : [ 
     { 
      "_id" : ObjectId("5a3b8cc68884dd1140a9a5b9"), 
      "sort_order" : 0, 
      "content" : "Sort Test", 
      "title" : "Sort Test" 
     }, 
     { 
      "_id" : ObjectId("5a3b8cda8884dd1140a9a5ba"), 
      "sort_order" : 1, 
      "content" : "Text Contents here...", 
      "title" : "A1" 
     }, 
     { 
      "_id" : ObjectId("5a3b8ce48884dd1140a9a5bb"), 
      "sort_order" : 2, 
      "content" : "Text Contents here...", 
      "title" : "A2" 
     }, 
     { 
      "_id" : ObjectId("5a3b8cec8884dd1140a9a5bc"), 
      "sort_order" : 3, 
      "content" : "Text Contents here...", 
      "title" : "A3" 
     }, 
     { 
      "_id" : ObjectId("5a3b8cec8884dd1140455bc"), 
      "sort_order" : 4, 
      "content" : "Text Contents here...", 
      "title" : "A4" 
     } 
    ], 
    "description" : "Sort Test", 
    "__v" : 0 
} 

var slides = dbObject.slides; 

var switchElementsInArray = function(array, sortOrder1, sortOrder2) { 
    var newArray = []; 
    for(var element of array) { 
     if(element.sort_order === sortOrder1) { 
      newArray.push(elem2); 
     } else if(element.sort_order === sortOrder2) { 
      newArray.push(elem1); 
     } else { 
      newArray.push(element); 
     } 
    } 

    return newArray; 
} 


var newSlides = switchElementsInArray(slides, 2, 3); 
+0

elem1&elem2は、 –

関連する問題