sql >> Databasteknik >  >> NoSQL >> MongoDB

mongo db update ändrar ordningen på objektfälten

Du kan använda MongoDB-projektion likaså. (rekommenderat sätt)

Nedan är exemplet:

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
});

Ger dig utdata som du förväntade dig, dvs.

{
   "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
}, ...

Ett annat sätt är att när du har fått dokumenten till Node.js kan du ändra ordning på fälten i JSON.

Exempel:

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

Lägg den nyckelordning du vill ha i en array och fyll i funktionen. Analysera sedan resultatet tillbaka till JSON.

Anledning till varför det händer:

MongoDB allokerar utrymme för ett nytt dokument baserat på en viss utfyllnadsfaktor. Om din uppdatering ökar storleken på dokumentet utöver den storlek som ursprungligen tilldelades kommer dokumentet att flyttas till slutet av samlingen. Samma koncept gäller för fält i ett dokument.

Om du verkligen är intresserad och vill gräva i det här är länken för mer information



  1. Våranpassad fråga med sökbar

  2. Välj poster som matchar konkatvärde för två fält i mongodb

  3. MongoDB och Asp Core uppdaterar endast en nyckel:värdepar istället för hela modellen

  4. MongoDB Aggregation:Dubbelsökning och sammanslagningssvar till respektive objekt