asyncmongo嵌套查询

时间:2012-10-26 14:59:08

标签: python mongodb

我将项目的关系及其属性存储在结构中:

{'item': <item_id>,
 'rel_name': 'sizes:4762',
 'rel_type': 'sizes',
 'rel_value': '4762'}

并且mongoDB查询在mongodb shell中完美运行:

db.relations.distinct(
    'rel_name',
    {item:{
        $in: db.items.distinct('id', {
            'attributes.cat': {$in:[477]},
            'attributes.sizes': {$in:[4762,5071,5072,5089,5555,903]}
        })
    }}
)

需要使用asyncmongo运行它以避免获取items.distinct的值并将其传递回mongo(可能超过10000)的开销 也许是否有办法将整个查询作为字符串传递并获得结果?

1 个答案:

答案 0 :(得分:1)

这只适用于shell和db.eval(),因为你将运行javascript。 最后,您最终需要向mongo服务器发送2个不同的命令

  1. 从db.items集合中收集所有大小,这些大小位于您要发送的列表中

  2. 与每个具有'real_name:id'的那些匹配。

  3. 如果使用异步框架,那么您要优化的唯一事情就是每个cursor.next()事件都可以处理第二个查询。这些仍然是您要发送的两个不同的查询。