我将mongoengine和flask-restplus用于API服务器。
我的模特在这里。
from datetime import datetime
from mongoengine import *
from config import DB_NAME
connect(DB_NAME)
class Board(Document):
d = datetime.now()
date = "{}-{}-{}".format(d.year, d.month, d.day)
no = SequenceField()
title = StringField(required=True)
body = StringField(required=True)
tags = ListField(StringField(unique=True))
password = StringField(required=True)
created_at = DateTimeField(default=date)
updated_at = DateTimeField(default=date)
我定义了tags = ListField(StringField(unique=True))
。
因为文章没有重复的标签。
在这里插入标签代码。
tag = ~some user input here~
article = Board.objects.get(no=article_no)
article.tags.append(tag)
article.save()
但是当我插入重复的数据时,它存储了两次数据。
我要tags
拥有不同的数据。
为什么unique=True
不起作用?
关于此问题有解决方案吗?
答案 0 :(得分:0)
这是一个explanation为何不起作用的原因。作为解决方法,您可以使用Mongo提供的$addToSet
运算符。它还在Mongoengine
(docs)中实现,示例用法如下所示:
Board.objects(no=article_no).update_one(add_to_set__tags=tag)
其中标记可以是字符串或字符串列表