代码之家  ›  专栏  ›  技术社区  ›  Soviut

如何通过mongodb/pymongo中的dbref进行查询?

  •  4
  • Soviut  · 技术社区  · 15 年前

    可以查询吗 通过 使用单个查找规范的dbref?

    用户集合

    {
        'age': 30
    }
    

    邮政托收

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

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

    3 回复  |  直到 11 年前
        1
  •  6
  •   mdirolf    15 年前

    这是不可能的。我建议:

    a)更改数据模型,使所有数据都在一个文档中(可能不可能,具体取决于您的情况)。

    b)先查询30岁的用户,然后再进行第二次查询,以获取该列表中用户为$的文章。我将在客户端执行此操作,而不是使用服务器端JS或类似的操作。

        2
  •  1
  •   MFB    13 年前

    我使用了一个python驱动程序,所以请原谅我的不那么mongodb语法:

    users = list(db.Users.find({'Age':30}))
    posts = list(db.Posts.find({'User':{'$in':users}}))
    
        3
  •  0
  •   Rinat Mukhamedgaliev    11 年前

    安装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)}))
    
    推荐文章