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

PyMongoを使用して、MongoDB find()をシリアル化すると匿名ではないJSON配列に戻ります

    ここでの問題は、応答をJSONとして返すために、応答を別のデータ構造(現在は文字列)に渡す前に、応答をJSONとして文字列化しておくことです。つまり、基本的に二重エンコードを実行していて、「文字列」がエンコードされます。

    したがって、データを1回渡すだけです:

    docs = mongodb.find(...query...)
    return bson.json_util.dumps({ 'success': True, 'mycollectionKey': docs })
    

    したがって、このような小さなコレクションでは:

    { "_id" : ObjectId("5343aeb5efbdb94c3647c8df"), "field" : "BBB" }
    { "_id" : ObjectId("5343aebbefbdb94c3647c8e0"), "field" : "aaa" }
    { "_id" : ObjectId("5343aebfefbdb94c3647c8e1"), "field" : "AAA" }
    

    次のような結果が得られます:

    {   
        "mycollectionKey": [
            {"field": "BBB", "_id": {"$oid": "5343aeb5efbdb94c3647c8df"}}, 
            {"field": "aaa", "_id": {"$oid": "5343aebbefbdb94c3647c8e0"}}, 
            {"field": "AAA", "_id": {"$oid": "5343aebfefbdb94c3647c8e1"}}
        ], 
        "success": true
    }
    

    これらの2つのキーの順序が本当に心配な場合は、bson "dumps"を使用して文字列に移動し、標準のjsonデコーダーでデコードして、Mongoオブジェクトを逆シリアル化したネイティブdictを取得し、さらに注文した口述。

    しかし、実際には、クライアントはキーの順序を気にする必要はなく、それらのルート要素を期待するだけです。




    1. MongoDB:メッセージングアプリに最適なデザイン

    2. MongoDBを使用してオブジェクトを配列に$addToSetし、$sortする方法を教えてください。

    3. Mongodb-既存のコレクションに一意のインデックスを追加する

    4. 他のテキストのテキスト検索クエリは常に結果を返しませんか?