sql >> Databáze >  >> NoSQL >> MongoDB

mongo db update změnou pořadí polí objektů

Můžete použít projekci MongoDB také. (doporučený způsob)

Níže je příklad:

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

Poskytuje výstup, jak jste očekávali, tj.

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

Dalším způsobem je, že jakmile získáte dokumenty do Node.js, můžete změnit pořadí polí v JSON.

Příklad:

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

Vložte požadované pořadí klíčů do pole a dodejte funkci. Poté výsledek analyzujte zpět do JSON.

Důvod, proč k tomu dochází:

MongoDB přiděluje prostor pro nový dokument na základě určitého faktoru výplně. Pokud vaše aktualizace zvětší velikost dokumentu nad původně přidělenou velikost, dokument se přesune na konec kolekce. Stejný koncept platí pro pole v dokumentu.

Pokud vás to opravdu zajímá a chcete se do toho pustit, zde je odkaz pro více informace



  1. Přejmenování pole ve vloženém dokumentu v poli v MongoDB nefunguje

  2. Dotaz na dokumenty, které mají vnitřní podpole dané hodnoty

  3. Jak ukládat data v MongoDb pomocí modelu mongoose a asynchronního vodopádu

  4. Redis pipeline pořadí provedení