1

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

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

并拥有在 mongodb shell 中完美运行的 mongoDB 查询:

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)也许有没有办法将整个查询作为字符串传递并获得结果?

4

1 回答 1

1

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

  1. 从 db.items 集合中收集所有尺寸,这些尺寸在您发送的列表中

  2. 与每个具有“real_name:id”的人匹配。

如果您使用异步框架,您唯一需要优化的是对于每个 cursor.next() 事件,您可以处理第二个查询。这些仍然是您将发送的 2 个单独的不同查询。

于 2012-10-31T15:48:46.333 回答