是否可以使用单个查找规范查询通过 DBRef?
用户集合
{
'age': 30
}
收集后
{
'user': DBRef('user', ...)
}
是否可以在单个查找步骤中查询所有帖子的用户是谁?如果没有,创建一个javascript函数来处理多阶段操作或者会导致阻塞问题是否明智?
答案 0 :(得分:6)
不可能这样做。我会建议:
a)更改您的数据模型,以便所有数据都在一个文档中(根据您的情况,可能无法实现)。
b)首先查询30个用户,然后再进行第二次查询以获取该列表中用户为$的帖子。我会做这个客户端而不是使用服务器端的JS或类似的东西。
答案 1 :(得分:1)
我使用的是Python驱动程序,请原谅我的不那么mongodb语法:
users = list(db.Users.find({'Age':30}))
posts = list(db.Posts.find({'User':{'$in':users}}))
答案 2 :(得分:0)
安装python bson 包。并尝试作为例子。
import pymongo
from pymongo import MongoClient
from bson.dbref import DBRef
client = MongoClient('ip', 27017)
client.the_database.authenticate('user', 'password', source='db_name')
db = client['db_name']
user = db['user']
user_id = user.find_one({'email': 'xxxxx@gmail.com'}).get('_id')
client_user_relation = db['client_user_relation']
print(client_user_relation.find_one())
print(user_id)
print(DBRef(collection = "user", id = user_id))
print(client_user_relation.find_one({'user': DBRef(collection = "user", id = user_id)}))