由于mongodb中的每个集合在_id列上都有一个默认索引,因此我想在以下情况下利用它。
我的收藏如下
{
"_id":{
"timestamp" : ISODate("2016-08-24T23:22:20.201Z"),
"departmentname" : "sales",
"city":"NJ"
}
//Other fields in my collection
}
Run Code Online (Sandbox Code Playgroud)
通过这种结构,我可以按以下方式进行查询,
db.getCollection('test').find(
{
"_id" : {
"timestamp" : ISODate("2016-08-21T23:22:20.201Z"),
"departmentname" : "sales",
"city":"NJ"
}
}
)
Run Code Online (Sandbox Code Playgroud)
但是,当我通过一个或多个字段查询以下_id列的一部分时,
db.getCollection('test').find(
{
"_id" : {
"timestamp" : ISODate("2016-08-21T23:22:20.201Z")
}
}
)
Run Code Online (Sandbox Code Playgroud)
(要么)
db.getCollection('test').find(
{
"_id" : {
"departmentname" : "sales"
}
}
)
Run Code Online (Sandbox Code Playgroud)
(要么)
db.getCollection('test').find(
{
"_id" : {
"departmentname" : "sales",
"city":"NJ"
}
}
)
Run Code Online (Sandbox Code Playgroud)
我看不到任何文件退回
当我使用.explain()检查时,我看到它已经使用了Index,但是没有找到任何文档。
另外,我想对timestamp字段进行日期范围查询,并对_id列中的一个或多个字段进行查询,如下所示,
db.getCollection('test').find(
{
"_id.timestamp" : {
"$gte": …Run Code Online (Sandbox Code Playgroud)