我在 mongodb 中有一个集合,我为其创建了以下索引。
let keys = { lastModifiedDate: -1 };
let options = {
expireAfterSeconds: 120,
partialFilterExpression: { active: false }
};
mongoose.connect(MONGO_URI, function (err, db){
if (err) throw new Error(err);
db.collection("users").createIndex(keys, options)
});
另一种创建索引的方法(使用 shell 命令)是:
db.eventlog.createIndex(
{ lastModifiedDate: -1 },
{ expireAfterSeconds: 120, partialFilterExpression: { active: 'false' } }
);
在猫鼬模式中,我展示了以下内容:
lastModifiedDate: {
type: Date,
default: new Date()
},
expireAfterSeconds: {
type: Date
}
整个事情都按原样运行,当满足“active”为“false”的条件时,文档会在 120 秒后自动删除。
我想知道的是这个索引:
{ expireAfterSeconds: 120, partialFilterExpression: { active: 'false' }}
算作复合索引吗?
我在 Mongodb 中读到过,如果创建复合索引,则最多只能有 32 个字段。我计划在集合中包含超过 32 个字段。
答案 0 :(得分:2)
不,这不是复合索引,您只有一个字段:
{ lastModifiedDate: -1 }
这才是最重要的。
答案 1 :(得分:1)
我在 Mongodb 中读到过,如果创建复合索引,则最多只能有 32 个字段。我计划在集合中包含超过 32 个字段。
该复合索引中“只能”有 32 个字段。
您可以在集合中拥有的字段数量没有限制。
db.eventlog.createIndex(
{ lastModifiedDate: -1 },
{ expireAfterSeconds: 120, partialFilterExpression: { active: 'false' } }
);
无论如何,这不是复合索引。它只有一个字段。