sql >> データベース >  >> NoSQL >> MongoDB

MongoDBでプロパティが表示される順序を変更します

    上記の質問と回答はかなり古いものです。とにかく、誰かがこれを訪問した場合、私は追加する必要があると感じています:

    この答えは完全に間違っています。実際、Mongoドキュメントでは、順序付けられたキーと値のペアがあります。ただし、pymongoを使用する場合、実際に順序付けされていないドキュメントにはpython dictが使用されます(cpython 3.6以降、python dictは順序を保持しますが、これは実装の詳細と見なされます)。ただし、これはpymongoドライバーの制限です。

    この制限は実際にはユーザビリティに影響を与えることに注意してください。 dbにサブドキュメントを照会すると、キーと値のペアの順序が正しい場合にのみ一致します。

    次のコードを自分で試してみてください:

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

    このコードが実行されるたびに、「同じ」ドキュメントがコレクションに追加されます。したがって、このコードスニペットを実行するたびに、出力される値は「1つ増えるはずです」。これは、正しい順序でサブドキュメントのみを検索するためではなく、Pythondictがサブドキュメントを任意の順序で挿入するだけだからです。

    これを克服するために順序付けられたdictを使用する方法については、次の回答を参照してください:https://stackoverflow.com/a/30787769/4273834



    1. MongoDBまたはCouchDB-本番環境に適していますか?

    2. EC2サーバー上のMongoDBhttpインターフェースにリモート接続

    3. ノードでRedis期限切れイベントを受信するにはどうすればよいですか?

    4. MongoDBドキュメントの複数のフィールドを更新する