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

FLASKとpythonでmongoを使用する

    まず第一にfind_one コレクションに一致する要素がない場合は、単一の辞書またはNoneを返します。だから私はpage[0] キー0のページディクショナリの値を取得するのと同じです

    返されたドキュメントにObjectIdが含まれている場合 _idとして 単純にjsonifyを使用することはできません なぜなら、ObjectIdのように JSONシリアル化可能ではありません。次のようなものを使用できます:

    jsonify({ 'page': make_public_page({k:v for k, v in page.items() if k != '_id'}))
    

    または、単に_idを削除することもできます page.pop('_id')を呼び出す

    bson.json_utilを使用することもできます 。 BSONとJSONを変換するためのツールが含まれています。

    from flask import Response 
    from bson import json_util
    

    次に、jsonifyを置き換えます これに似たもので:

    return Response(
        json_util.dumps({'page' : make_public_page(page)}),
        mimetype='application/json'
    )
    

    編集

    問題に対処するための短くて汚い方法が必要な場合は、次のように行うことができます:

    from bson import json_util, ObjectId
    import json
    
    #Lets create some dummy document to prove it will work
    page = {'foo': ObjectId(), 'bar': [ObjectId(), ObjectId()]}
    
    #Dump loaded BSON to valid JSON string and reload it as dict
    page_sanitized = json.loads(json_util.dumps(page))
    


    1. キーの命名規則を再確認しますか?

    2. DoctrineMongoDBはidで検索します

    3. Mongodbは配列要素の比較を見つけます

    4. 地理空間情報をmongoDBに保存する方法