2017-10-25 9 views
0

"users"のコレクションを含む "rooms"のコレクションがあります。 "rooms"コレクションを検索して、ユーザー名が既に存在するかどうかを確認し、そうであれば、 "user_ip"フィールドを更新しようとしています。コレクションは次のようになります。Python Flaskを使用してMongoDBにエントリが存在するか確認してください

{ 
    '_id': ObjectId('59eea13a2728d50a5edefe0z'), 
    'name': 'RH-0', 
    'room_key': 'test123', 
    'users': 
     [{'username': 'Pablo', 'user_ip': '127.0.0.1', 'user_port':0}, 
     {'username': 'Franco', 'user_ip': '127.0.0.1', 'user_port':1}, 
     {'username': 'Valeri', 'user_ip': '127.0.0.1', 'user_port':2}, 
     {'username': 'Sarah', 'user_ip': '127.0.0.1', 'user_port':3} 
     ], 
    'workshop_unit': 'wsu0' 
} 

私の現在のソリューションは、roomnameとユーザー名を使用しようとしたが、私は検索するだけで、「ユーザー名」を使用することを好むだろう。

def user_exists(roomname, username): 
if db.rooms.find({"name": roomname},{'username': username}).count() > 0: 
    return 1 
else: 
    return 0 

**注:ユーザー名は、すべてのコレクションで一意のものになります。

+0

2つの辞書を検索しようとしていますが、それらをマージしてみると結果が表示されます。 – patito

+0

もしdb.rooms.find({'username':username})。count()> 0: return 1 else: return 0'を実行しようとしましたが、正しい結果が得られません。 – plusvictoria

答えて

0

次モンゴシェルコードは、仕事をする:

db.yourColl.update(
    { "users.username": "Valeri" }, 
    { 
     "$set": { "users.$.user_ip": "1.1.0.0" } 
    } 
) 

私はあなたが簡単にあなたのコードにこれを適応させることができますかなり確信しています。

+0

私はこれを私の "user_exists"関数で動作させるようにしました!ありがとうございました! – plusvictoria

+0

あなたの問題を解決した場合、私の答えを受け入れることはできますか? – cbartosiak

関連する問題