我想在嵌入式数组中插入一个新项目,但在此之前我需要确保该项目在数组中不存在: 那是集合
Models.Member
我想在阵列中添加一个新帐户,但它必须是唯一的,这就像验证用户名/电子邮件不存在一样
答案 0 :(得分:0)
您的架构设计有一个主要限制:如果您有足够的帐户,则文档可能大于16 MB,即the maximum document size in MongoDB。
如果适用于您的用例,更好的解决方案是将accounts
创建为单独的集合,而不是单个文档中的数组。这将实现两件事:
accounts
集合上创建unique index。尝试插入具有重复用户名的文档将导致错误。答案 1 :(得分:0)
我实际上设法解决了这个问题:
data = request.get_json()
findOneuser=customers.find({"Customer_id": customer_id, "Accounts.Username": data["Username"]},
{"Accounts.Username.$": 1, "_id": 0})
print(findOneuser.count())
if findOneuser.count() == 0:
customers.update(
{"Customer_id": customer_id},
{"$addToSet": {
"Accounts":
{
"Account_id": data["Account_id"],
"FirstName": data["FirstName"],
"LastName": data["LastName"],
"Username": data["Username"],
"AccountType": "user",
"Created_at": data["Created_at"]}
这里是Api,我以JSON格式获取新帐户数据
> findOneuser
将验证用户是否存在而不是将其附加到帐户数组