sql >> Database >  >> NoSQL >> MongoDB

mongo db update de volgorde van objectvelden wijzigen

U kunt MongoDB-projectie gebruiken ook. (aanbevolen manier)

Hieronder staat het voorbeeld:

db.collection.find({},{
   "Airport":1,
   "Day":1,
   "Humidity":1,
   "Sea Level Pressure":1,
   "State":1,
   "Station Pressure":1,
   "Temperature":1,
   "Time":1,
   "Wind Direction":1,
   "Wind Speed":1,
   "_id":1,
   "month_high":1
});

Geeft u de uitvoer zoals u had verwacht, d.w.z.

{
   "Airport":"ORL",
   "Day":8,
   "Humidity":55,
   "Sea Level Pressure":196,
   "State":"Florida",
   "Station Pressure":29.97,
   "Temperature":82,
   "Time":1553,
   "Wind Direction":170,
   "Wind Speed":5,
   "_id":ObjectId("5340eff554f98e32c5990b4f"),
   "month_high":true
}, ...

Een andere manier is dat als je de documenten eenmaal in Node.js hebt gekregen, je de velden in JSON opnieuw kunt ordenen.

Voorbeeld:

var json = {"name": "David", "age" : 78, "NoOfVisits" : 4   };
console.log(json);
//outputs - Object {name: "David", age: 78, NoOfVisits: 4}
//change order to NoOfVisits,age,name

var k = JSON.parse(JSON.stringify( json, ["NoOfVisits","age","name"] , 4));
console.log(k);
//outputs - Object {NoOfVisits: 4, age: 78, name: "David"} 

Plaats de gewenste sleutelvolgorde in een array en lever deze aan de functie. Parseer het resultaat vervolgens terug naar JSON.

Reden waarom het gebeurt:

MongoDB wijst ruimte toe voor een nieuw document op basis van een bepaalde opvulfactor. Als uw update de grootte van het document groter maakt dan de oorspronkelijk toegewezen grootte, wordt het document verplaatst naar het einde van de verzameling. Hetzelfde concept is van toepassing op velden in een document.

Als je echt geïnteresseerd bent en je erin wilt verdiepen, is hier de link voor meer informatie



  1. Automatisch aanvullen met java, Redis, Elastic Search, Mongo

  2. Haal één element op uit een reeks objecten die deel uitmaken van één document (mangoest)

  3. Sorteer geneste reeks objecten

  4. Redis - Lua-tabellen als retourwaarden - waarom werkt dit niet?