sql >> Database teknologi >  >> NoSQL >> MongoDB

Rediger rækkefølgen, hvori egenskaber vises i MongoDB

Ovenstående spørgsmål og svar er ret gamle. Under alle omstændigheder, hvis nogen besøger dette, har jeg lyst til at tilføje:

Dette svar er fuldstændig forkert. Faktisk ER I Mongo-dokumenter bestilte nøgleværdi-par. Men når du bruger pymongo, vil den bruge python dicts til dokumenter, som faktisk ikke er bestilt (fra cpython 3.6 bevarer python dicts rækkefølge, men dette betragtes som en implementeringsdetalje). Men dette er en begrænsning for pymongo-driveren.

Vær opmærksom på, at denne begrænsning faktisk påvirker anvendeligheden. Hvis du forespørger i db for et underdokument, vil det kun matche, hvis rækkefølgen af ​​nøgleværdiparrene er korrekt.

Prøv selv følgende kode:

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())

Hver gang denne kode bliver eksekveret, tilføjes det 'samme' dokument til samlingen. Hver gang vi kører dette kodestykke, bør den udskrevne værdi derfor stige med én. Det gør det ikke, fordi du kun finder maches underdokumenter med den korrekte rækkefølge, men python-dikter indsætter bare underdokumentet i vilkårlig rækkefølge.

se følgende svar, hvordan du bruger bestilt dict til at overvinde dette:https://stackoverflow.com/a/30787769/4273834



  1. Omvendt sideinddeling gennem et Redis-sorteret sæt

  2. Hvordan bruger man Redis i et C++ program?

  3. GridFS i Spring Data MongoDB

  4. DIY Cloud Database på Amazon Web Services - Ny hvidbog