这样我就可以检查用户以前是否喜欢某个菜谱,这样他们就不会两次喜欢它了。 我的数据库中有如下用户:
username:"username"
password:"password"
likes:Array
0:"recipe_id"
我正在尝试使用查询:
if mongo.db.users.find_one({'username': session.get('USERNAME')}, {'likes': [recipe_id]}) == None:
mongo.db.recipe.update_one({'_id': ObjectId(recipe_id)}, {
'$inc': {'likes': 1}})
mongo.db.users.update_one({'username': session['USERNAME']}, {
'$push': {'likes': recipe_id}})
但是它只是返回,不管recipeId
是否在数组中。我想这是因为它做了两个查询。有没有办法指定第二个查询只查看该特定用户
查询的问题是在
.find_one
的投影部分中有likes : [recipe_id]
。所以它必须在过滤器部分,基本上第二个参数是投影,它有助于投影文档中的某些字段尝试此查询:
在
.find_one()
中,您不需要像正在做的那样将recipe_id
包装到数组中:likes : [recipe_id]
是不需要的,如果您想这样做,您需要在查询的过滤器部分使用像这样的$in操作符参考:.findOne()&.find_one()
相关问题 更多 >
编程相关推荐