我正在创建一个服务,我将使用MongoDB作为存储后端.该服务将生成用户输入的哈希,然后查看我们的数据集中是否已存在相同的哈希(+输入).
哈希将是唯一但随机的(=非增量/顺序),所以我的问题是:
$object_id = new MongoId(HEX-OF-96BIT-HASH);
或者MongoDB会不同于其他服务器生成的ObjectID,因为"真正的"ObjectID还包含时间戳,machine_id等?
使用"随机"值的优缺点是什么?我想当新的_id不以任何方式递增时,引擎更新插入索引在统计上会更慢 - 我是否正确?
我有一个看起来像这样的 mongo 集合:
{
name: string
_id: (auto set)
items: array[
name: string
url: string
items: array[
{
name: string,
url: string,
items: []
}
]
]
}
Run Code Online (Sandbox Code Playgroud)
我正在使用findByIdAndUpdate(使用 mongoose)将一个项目添加到 items 数组中:
Menu.findByIdAndUpdate(
req.body.parentid,
{
$push: {
items: {
name: req.body.item.name,
url: req.body.item.url,
items: []
}
}
},
{
safe: true,
upsert: true,
new: true
},
function(err, model) {
if (err !== null) {
console.log(err);
}
}
);
Run Code Online (Sandbox Code Playgroud)
这工作正常,但它不会_id向插入items数组的每个对象添加。我真的需要为每个人提供一个 id。
我猜它来自使用的方法,findByIdAndUpdate因为它看起来更像是更新而不是插入。如果我的想法是正确的。
使用 …