如何通过 MongoDB/pymongo 中的 DBRef 进行查询?

发布于 2024-09-02 03:44:00 字数 285 浏览 11 评论 0原文

是否可以使用单个查找规范通过 DBRef 进行查询?

用户集合

{
    'age': 30
}

帖子集合

{
    'user': DBRef('user', ...)
}

是否可以在单个查找步骤中查询用户年龄为 30 岁的所有帖子?如果没有,创建一个 JavaScript 函数来处理多阶段操作是否明智,否则会导致阻塞问题?

Is it possible to query through a DBRef using a single find spec?

user collection

{
    'age': 30
}

post collection

{
    'user': DBRef('user', ...)
}

Is it possible to query for all post who's users are 30 in a single find step? If not, would it be wise to create a javascript function to handle the multi-stage operation or will that cause blocking problems?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

月竹挽风 2024-09-09 03:44:00

这是不可能的。我建议:

a)更改您的数据模型,以便所有数据都在一个文档中(根据您的情况,可能不可能)。

b) 首先查询 30 岁的用户,然后进行第二次查询以获取该列表中用户为 $ 的帖子。我会做这个客户端而不是使用服务器端 JS 或类似的东西。

it's not possible to do that. i would recommend either:

a) changing your data model so that all of the data is in a single document (might not be possible depending on your case).

b) querying for users who are 30 first, and then doing a second query to get posts where user is $in that list. i would do this client side rather than using server-side JS or anything like that.

和我恋爱吧 2024-09-09 03:44:00

我使用 Python 驱动程序,所以请原谅我不那么 mongodb 语法:

users = list(db.Users.find({'Age':30}))
posts = list(db.Posts.find({'User':{'$in':users}}))

I use a Python driver, so forgive my not-so-mongodb syntax:

users = list(db.Users.find({'Age':30}))
posts = list(db.Posts.find({'User':{'$in':users}}))
感性不性感 2024-09-09 03:44:00

安装 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': '[email protected]'}).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)}))

Install python bson package. and try as example.

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': '[email protected]'}).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)}))
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文