MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Zmień kolejność wyświetlania właściwości w MongoDB

Powyższe pytanie i odpowiedź są dość stare. W każdym razie, jeśli ktoś to odwiedzi, czuję, że powinienem dodać:

Ta odpowiedź jest całkowicie błędna. W rzeczywistości w Mongo Documents SĄ uporządkowane pary klucz-wartość. Jednak podczas korzystania z pymongo użyje dyktowań Pythona dla dokumentów, które rzeczywiście nie są uporządkowane (od wersji cpython 3.6 dyktowania Pythona zachowują kolejność, jednak jest to uważane za szczegół implementacji). Ale to jest ograniczenie sterownika pymongo.

Pamiętaj, że to ograniczenie faktycznie wpływa na użyteczność. Jeśli wyślesz zapytanie do bazy danych o poddokument, zostanie on dopasowany tylko wtedy, gdy kolejność par klucz-wartość jest prawidłowa.

Po prostu wypróbuj sam następujący kod:

from pymongo import MongoClient
db = MongoClient().testdb
col = db.testcol
subdoc = {
   'field1': 1,
   'field2': 2,
   'filed3': 3
}
document = {
   'subdoc': subdoc
}
col.insert_one(document)
print(col.find({'subdoc': subdoc}).count())

Za każdym razem, gdy ten kod zostanie wykonany, „ten sam” dokument jest dodawany do kolekcji. Dlatego za każdym razem, gdy uruchamiamy ten fragment kodu, drukowana wartość 'powinna' wzrosnąć o jeden. Nie dzieje się tak dlatego, że znajduje tylko poddokumenty machów z poprawną kolejnością, ale dyktuje python po prostu wstawia poddokument w dowolnej kolejności.

zobacz następującą odpowiedź, jak użyć uporządkowanego dict, aby rozwiązać ten problem:https://stackoverflow.com/a/30787769/4273834



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Rejestrowanie audytu dla MongoDB

  2. pymongo — moduł dnspython musi być zainstalowany, aby można było używać identyfikatorów URI mongodb+srv://

  3. Kroki instalacji MongoDB na Amazon Linux

  4. Pobrać _id wstawionego dokumentu w MongoDB?

  5. Usuń wpis z tablicy za pomocą sterownika MongoDB-Java