gpt4 book ai didi

ruby - 使用 Mongodb 存储一个非常大的 "blacklist"ids 列表

转载 作者:可可西里 更新时间:2023-11-01 09:59:51 25 4
gpt4 key购买 nike

我需要在 mongo 中存储一个无序列表的 ID 作为“黑名单”,并纯粹用于检查原因。

blacklisted_ids= [1,23......100002942234... some very large number]

但是将它存储在单个文档中是不可行的,因为我会很快突破 2Mb 的限制。

我可以在 mongodb 中创建一个集合,并将每个 id 作为文档插入,但这似乎有点过分,因为我只想检查是否存在。

执行此操作的正确方法是什么?

注意:我使用的是 mongoid/rails。 =)

最佳答案

这些 id 是整数吗? Mongo 的文档大小限制在 1.8 版中提高到 16 MB,因此您应该能够使用它在单个文档中容纳几百万个整数。

如果这仍然不能满足您的需求,我认为一个新的集合一点也不过分。请确保您使用“_id”字段来存储您关心的 ID,这样您就不会浪费任何磁盘空间:

class BlacklistedId
include Mongoid::Document
identity :type => Integer
end

此外,当您查询它时,请确保您执行以下操作:

BlacklistedId.where(:_id => 78943).only(:_id).first
# A result means it's blacklisted, nil means it's not.

通过告诉 Mongo 您只想返回 _id 字段,它将直接从 _id 索引中为您的查询提供服务,而不会费心去寻找磁盘上的实际文档。这将使事情变得活泼,也意味着 Mongo 不需要将实际集合保存在 RAM 中 - 只需索引中的值。

关于ruby - 使用 Mongodb 存储一个非常大的 "blacklist"ids 列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6288157/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com