我在 MongoDB 中有一个文档集合,如下所示:
{"_id": 1, "array": [{"id": 1, "content": "..."}, {"id": 2, "content": "..."}]}
{"_id": 2, "array": [{"id": 1, "content": "..."}, {"id": 2, "content": "..."}, {"a_id": 3, "content": "..."}]}
Run Code Online (Sandbox Code Playgroud)
我想确保每个文档中没有重复的内容array.id。所以提供的示例是可以的,但以下示例则不行:
{"_id": 1, "array": [{"id": 1, "content": "..."}, {"id": 1, "content": "..."}]}
Run Code Online (Sandbox Code Playgroud)
我的问题是如何做到这一点(最好是在PyMongo)。
编辑
我尝试的是以下代码,我认为它会创建密钥(_id, array.id),但如果运行它,则不会发生这种情况:
from pymongo import MongoClient, ASCENDING
client = MongoClient(host="localhost", port=27017)
database = client["test_db"]
collection = database["test_collection"]
collection.drop()
collection.create_index(keys=[("_id", ASCENDING),
("array.id", ASCENDING)],
unique=True,
name="new_key")
document = {"array": [{"id": 1}, {"id": 2}]} …Run Code Online (Sandbox Code Playgroud)