Pymongo外部左侧通过查找+通过Regex搜索

发布于 2025-02-11 12:50:03 字数 1164 浏览 1 评论 0原文

我有2个集合,我想通过正则表达式搜索所有用户,但仅返回用户views中不存在。

/* Users */
{
    "user_id" : "SB4mKAxaBijQXnS73",
    "username" : "user1"
},
{
    "user_id" : "SB4mdasd3ijQXnS73",
    "username" : "user2"
}

/* Views */
{
     "view_id " : "rhqioBkePzGCrRFLp",
     "recipient_username" : "user1"
 }

我使用的是beanie,因​​此函数必须是异步,并且收集是从pydantic类调用用户view

更新: 到目前为止,我的代码:

        user = await User.aggregate([
                            {'$lookup':
                                {
                                    'from': View.get_collection_name(),
                                    'localField': "username",
                                    'foreignField': "recipient_username",
                                    'let': { "username": "username", "recipient_username": "username"},
                                    'pipeline': [{ "$match": { "$expr": { "$not": { "$in": [ "$username", "$$username" ] }}}}],
                                    'as': 'out'
                                }}]).to_list()
    return user

我的管道无法正确评估我的表达。知道为什么吗?

I have 2 collections and I want to search all users by regular expression but only return users that don't exist in views.

/* Users */
{
    "user_id" : "SB4mKAxaBijQXnS73",
    "username" : "user1"
},
{
    "user_id" : "SB4mdasd3ijQXnS73",
    "username" : "user2"
}

/* Views */
{
     "view_id " : "rhqioBkePzGCrRFLp",
     "recipient_username" : "user1"
 }

I'm using beanie, so function has to be async and collection is called from pydantic classes User and View.

UPDATED:
My code so far:

        user = await User.aggregate([
                            {'$lookup':
                                {
                                    'from': View.get_collection_name(),
                                    'localField': "username",
                                    'foreignField': "recipient_username",
                                    'let': { "username": "username", "recipient_username": "username"},
                                    'pipeline': [{ "$match": { "$expr": { "$not": { "$in": [ "$username", "$username" ] }}}}],
                                    'as': 'out'
                                }}]).to_list()
    return user

My pipeline does not properly evaluate my expression. Any idea why?

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

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

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文