MongoDB中复合索引语法

3
关于如何定义复合索引的问题:
根据定义,我可以创建如下复合索引,它将为student_idclass_id创建一个复合索引。
db.students.createIndex({"student_id":1,"class_id":1});

然而,如果我提供类似这样的内容,会发生什么?
db.students.createIndex({"student_id,class_id":1})

语法有效且接受索引,但我不确定索引将如何创建。

有什么想法吗?


不错的问题,但我从未见过有人以那种方式创建复合索引。 - Rahul
1个回答

1
如果您这样做,然后只需运行db.students.getIndexes(),您将看到索引已创建用于名为student_id,class_id的字段 - 这正是您要求的,即不是复合索引,而是一个名称中带有逗号的字段的索引。
{
    "v" : 1,
    "key" : {
        "student_id,class_id" : 1.0
    },
    "name" : "student_id,class_id_1",
    "ns" : "tmp.students"
}

MongoDB应该会在那里抛出一个异常,因为不存在那个名称的字段,不是吗? - user641887
MongoDB不是具有严格模式的SQL数据库。甚至还有一些功能直接针对可能存在未索引字段的文档,并因此不为其创建索引条目-请参阅https://docs.mongodb.com/manual/core/index-sparse/。 - DAXaholic

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接