限制嵌入式 Mongo 文档的文档插入
Limit Document Insertion for Embedded Mongo Document
我很好奇是否可以 create/enforce 对 mongoDB 文档进行一些限制。我想将 MongoDB 嵌入式文档限制为一定数量的记录 (10)。我正在创建一个密码检查系统,它将查询 Mongo 并检查用户的密码是否 a) 像他们当前的密码,或者 b) 匹配他们最旧的 10 个密码之一。如果不匹配,则数据库将更新为最新密码,旧密码文档将更新为最新密码。但是,我想将其限制为 10 条记录,并覆盖最旧的记录,以便在 oldPassword 文档中只有 10 个密码。
这有意义吗?是否有可能强制执行这样的限制?模拟对象如下所示:
_id: "",
username: "User",
currentPassword: "pass"
oldPasswords:{
password1: "pass1",
password2: "pass2",
password3: "pass3",
password4: "pass4",
password5: "pass5",
password6: "pass6",
password7: "pass7",
password8: "pass8",
password9: "pass9",
}
作为侧边栏:这是处理 Mongo 中密码的最佳方式吗?我已经阅读了他们的 modeling documents 并且看起来像这样的一对多关系在嵌入式文档中最好,除非嵌入式文档继续增长。然后,在这一点上,似乎最好在其自己的文档中引用旧密码。
如有任何帮助,我们将不胜感激!
如果可以将旧密码转换为数组而不是对象,则可以使用 slice。
db.passwords.update(
{ _id: 1 },
{
$push: {
oldpasswords: {
$each: ["passabc"],
$slice: -10
}
}
}
)
这应该会在您的数组中保留最后 10 个密码。
我很好奇是否可以 create/enforce 对 mongoDB 文档进行一些限制。我想将 MongoDB 嵌入式文档限制为一定数量的记录 (10)。我正在创建一个密码检查系统,它将查询 Mongo 并检查用户的密码是否 a) 像他们当前的密码,或者 b) 匹配他们最旧的 10 个密码之一。如果不匹配,则数据库将更新为最新密码,旧密码文档将更新为最新密码。但是,我想将其限制为 10 条记录,并覆盖最旧的记录,以便在 oldPassword 文档中只有 10 个密码。
这有意义吗?是否有可能强制执行这样的限制?模拟对象如下所示:
_id: "",
username: "User",
currentPassword: "pass"
oldPasswords:{
password1: "pass1",
password2: "pass2",
password3: "pass3",
password4: "pass4",
password5: "pass5",
password6: "pass6",
password7: "pass7",
password8: "pass8",
password9: "pass9",
}
作为侧边栏:这是处理 Mongo 中密码的最佳方式吗?我已经阅读了他们的 modeling documents 并且看起来像这样的一对多关系在嵌入式文档中最好,除非嵌入式文档继续增长。然后,在这一点上,似乎最好在其自己的文档中引用旧密码。
如有任何帮助,我们将不胜感激!
如果可以将旧密码转换为数组而不是对象,则可以使用 slice。
db.passwords.update(
{ _id: 1 },
{
$push: {
oldpasswords: {
$each: ["passabc"],
$slice: -10
}
}
}
)
这应该会在您的数组中保留最后 10 个密码。