使用$ in运算符查询mongodb保持顺序

时间:2011-08-14 15:56:28

标签: mongodb batch-processing

我有一个url(资源)列表,以及每个资源的视图列表,所有这些都是 存储到mongodb数据库中。换句话说,resource有许多关联的views

资源和视图都包含一个字段url,我用它来识别资源和视图所在的网站。

我在var urls中有一个网址列表,我想返回,对于每个网址,按相同顺序网址只有一个与此网址相关联的观看次数

因此有两个标准对我来说很有意思:

  • 使用$ in运算符进行查询,保持关于我传递的列表的结果顺序。
  • 仅为$ in列表中的每个键返回一个项目。

当然,我可以迭代我的代码并执行类似的操作(在python中):

views = []
for url in urls:
    views.append(db.views.find_one({"url": url}))

我不知道$in运算符是如何完全表现的,如果它可以解决我的问题,但我担心它不会保留我感兴趣的顺序。也许我可以对结果进行排序查询?

但这意味着对N个网址进行N次查询,这些查询似乎根本没有优化。有没有办法避免这种情况?

1 个答案:

答案 0 :(得分:2)

不幸的是,这目前无法实现。 $ in没有订单保证(与db.test.save({a:1}); db.test.save({a:2}); db.test.find({a:{$in:[2,1]}})验证),目前您只能对字段进行排序,而不是固定有序的值集。