我如何在mongodb / pymongo中查询嵌入对象字段名?

时间:2014-07-16 00:44:42

标签: pymongo mongodb-query

我的用户'曾经喜欢的集合:

{'_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,新的爱好'表示嵌入对象,字段名称通常是明确的。

我是否必须维护两个数组(在mongodb中)或列表(在python中)?难道不是一个简单的解决方案吗?

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

1 个答案:

答案 0 :(得分:1)

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

您的选择是:

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