小编jav*_*ser的帖子

使用MongoDB _id字段作为具有多个字段的复合字段

由于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)

mongodb bson spring-data-mongodb

2
推荐指数
1
解决办法
3036
查看次数

标签 统计

bson ×1

mongodb ×1

spring-data-mongodb ×1