在MongoDB中搜索大量ID搜索

问题描述 投票:0回答:2

感谢您查看我的查询。我有 20k+ 个由客户端提供的唯一标识 ID,我想使用单个查询在 MongoDB 中查找所有这些 id。我尝试使用 $in 进行查找,但将所有 20K Id 放入 $in 中并进行搜索似乎并不可行。有没有更好的实现版本。

mongodb-query
2个回答
0
投票

如果 id 字段被索引,那么 IN 查询应该非常快,但我认为一次性执行 20k id 的查询不是一个好主意,因为它可能会消耗相当多的资源,例如内存,您可以将 id 分成多个具有合理大小的组并分别执行查询,并且您仍然可以在应用程序级别并行执行查询。


0
投票

考虑将您的 20k+ id 导入到集合中(例如使用

mongoimport
等)。然后执行从根集合到搜索集合的
$lookup
。根据
$lookup result
是否为空数组,您可以继续需要
$in
的原始操作。

db.rootCollection.aggregate([
  {
    "$lookup": {
      "from": "searchCollection",
      "localField": "_id",
      "foreignField": "_id",
      "as": "searchLookup"
    }
  },
  {
    "$addFields": {
      "matched": {
        $ne: [
          "$searchLookup",
          []
        ]
      }
    }
  },
  {
    $match: {
      matched: true
    }
  }// perform your other operations
])

这里有Mongo游乐场供大家参考。

© www.soinside.com 2019 - 2024. All rights reserved.