【问题标题】:How could I query embed object field name in mongodb / pymongo?如何在 mongodb / pymongo 中查询嵌入对象字段名称?
【发布时间】:2014-07-16 17:50:37
【问题描述】:

我的用户收藏曾经喜欢:

{'_id':'xxx', 'hobbies':['Dance','Ski']}

现在我将“喜欢”添加为:

{'_id':'xxx', 'hobbies':{'Dance':5,'Ski':8}}

我想查询用户至少有一个相同的爱好,我的旧查询是这样的:

db.usr.find({'_id':{'$ne':usr['_id']}, 'hobbies':{'$in':usr['hobbies']} })

现在我的查询是这样的:

db.usr.find({'_id':{'$ne':usr['_id']}, 
             'hobbies':{'$in':list(usr['hobbies'].keys())} })

我查看了 mongodb 文档,没有发现任何代表“爱好”字段名称或 python 字典键的内容。对于 mongodb,new 'hobbies' 表示嵌入对象,字段名称通常是确定的。

我是否必须维护两个数组(在 mongodb 中)或列表(在 python 中)?没有简单的解决办法吗?

{'_id':'xxx', 'hobbies':['Dance','Ski'], 'likes':[5,8]}

【问题讨论】:

    标签: pymongo mongodb-query


    【解决方案1】:

    不幸的是,mongodb 不支持查询/过滤字段名称

    您的选择是:

    1. 完整查询后在客户端进行过滤
    2. 像以前一样将爱好名称保留在一个数组中,以便能够在服务器端进行过滤

    【讨论】:

      猜你喜欢
      • 2021-06-08
      • 2014-10-01
      • 2018-09-08
      • 1970-01-01
      • 2019-05-17
      • 2023-03-11
      • 1970-01-01
      • 1970-01-01
      • 2019-08-12
      相关资源
      最近更新 更多