小编Jos*_*rej的帖子

如何为数组中嵌套的文档中的字段设置唯一约束?

我在 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)

arrays indexing mongodb pymongo

6
推荐指数
1
解决办法
2545
查看次数

标签 统计

arrays ×1

indexing ×1

mongodb ×1

pymongo ×1