我们说我有一个emails
集合,其字段和记录如下:
{
sendAt: "",
to: "3432849342332@someone.com",
from: "3432849342332@anotherone.com"
}
如果我只需要查询空 sendAt
字段的记录。考虑到这个要求,我应该如何索引此收集字段?我实际上并不需要查询sendAt
字段中的任何特定日期,因此在我看来,完整索引将是多余的。是否可以使用mondogb?
答案 0 :(得分:2)
从MongoDb 3.2开始,您可以使用部分索引:https://docs.mongodb.org/manual/core/index-partial。
例如,在您的情况下:
db.emails.createIndex(
{ sendAt: 1 },
{ partialFilterExpression: { sendAt: "" } }
)
另一种方法是在sendAt为空的文档中添加额外字段,并在该字段上创建稀疏索引:https://docs.mongodb.org/manual/core/index-sparse/
{
sendAt: "",
to: "3432849342332@someone.com",
from: "3432849342332@anotherone.com",
sendAtEmpty: true
}
{
sendAt: "1/1/1980",
to: "3432849342332@someone.com",
from: "3432849342332@anotherone.com",
}
db.emails.createIndex( { "sendAtEmpty": 1 }, { sparse: true } )