我有一个文档集合,每个文档都包含一个“列表”属性。
此列表是一组唯一对象(我为每个对象生成了一个 ObjectID)。我们称它们为 listElements。
现在。我需要更新同一查询中的 1 个或多个元素。我不需要它们的索引。对于数组,我不能用自己的特定值更新它们中的每一个,它只能作为使用相同操作更新所有匹配项。
我想将“列表”从数组转换为键是 ObjectID 值的对象,所以我可以这样做:
{ $set: { "list.23rwfsdgfsda.time":123, "list.GJHhjh34j2h.order": "ascending" } }
这只是一个占位符示例,我知道它的 12 个字符作为键:P
我的问题围绕着键:12 个字符太多了。我估计给定列表(可能更多)大约有 300 个可能的 listElements,因此 3 个字符的 16 个基数甚至 10 个基值都可以。
现在,如何为每个新的 listElement 生成一个唯一的每个“列表”键,同时避免使用计数器?对我来说,关键名称是什么并不重要,只要它们简短且每个“列表”都是唯一的。
PS:我不需要索引,因为我永远不会根据列表和/或其内容找到集合中的所有文档。