2017-12-21 5 views
1

Ich mag es die sort_order Schlüssel Reihenfolge der Objekte in Folien Unterdokument in Bezug auf ändern.Ändern der Reihenfolge des Objekts in Objektarray mit einem Elemente Schlüssel in Mongo Sammelobjekt

Für zB: Ich möchte mit dem Titel A3 oben A2 Schlitten bewegen. dh. sort_order Wert von A3 (3) geändert wird, um und die A2 wird , und umgekehrt im Fall einer Abwärtsbewegung geändert werden.

Wie zu tun?

Unten ist das DB-Objekt.

{ 
    "_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 
} 

Antwort

1

Mit dieser Methode können Sie ein neues Array mit den gleichen Elementen erstellen und die, nach denen Sie fragen, geschaltet (ich denke, was Sie gefragt haben). Dann müssen Sie nur Folienfelder in der Datenbank mit neuen Array aktualisieren.

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 bezieht sich auf ???? –

Verwandte Themen