我有一组“房间”,其中包含一组“用户”。我正在尝试搜索“rooms”集合以查看用户名是否已存在,如果已存在,则更新“user_ip”字段。该集合看起来像:
{
'_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'
}
我当前的解决方案尝试使用房间名称和用户名,但我更愿意只使用“用户名”进行搜索。
def user_exists(roomname, username):
if db.rooms.find({"name": roomname},{'username': username}).count() > 0:
return 1
else:
return 0
**注意:在所有馆藏中,用户名将是唯一的。
答案 0 :(得分:0)
以下Mongo shell代码将完成这项工作:
db.yourColl.update(
{ "users.username": "Valeri" },
{
"$set": { "users.$.user_ip": "1.1.0.0" }
}
)
我非常确定您可以轻松地将其与您的代码相匹配。