2

早上好。我有一些问题。我有这些领域:

name: "Mike",
city: "NY",
address: "something",
pets: ["dog", "cat"]

我创建了索引

db.person.ensureIndex({name: 1})
db.person.ensureIndex({city: 1})
db.person.ensureIndex({address: 1})
db.person.ensureIndex({pets: 1})

查询是

db.person.find({$and: [{$or: [{name: "Mike"}, {city: "CA"}]}, {pets: "dog"}]}).explain()

而且我没有得到 B_tree 查询……我得到了 BasicCursor……如何解决?

4

1 回答 1

1

可能是时候升级您的 MongoDB 版本了。使用 v2.2.1 我得到一个 BTree 光标。

> db.person.insert({name: "Mike", city: "NY", address: "something", pets: ["dog", "cat"]})
> db.person.ensureIndex({name: 1})
> db.person.ensureIndex({city: 1})
> db.person.ensureIndex({address: 1})
> db.person.ensureIndex({pets: 1})
> db.person.find({$and: [{$or: [{name: "Mike"}, {city: "CA"}]}, {pets: "dog"}]}).explain()
{
        "cursor" : "BtreeCursor pets_1",
        "isMultiKey" : true,
        "n" : 1,
        "nscannedObjects" : 1,
        "nscanned" : 1,
        "nscannedObjectsAllPlans" : 1,
        "nscannedAllPlans" : 1,
        "scanAndOrder" : false,
        "indexOnly" : false,
        "nYields" : 0,
        "nChunkSkips" : 0,
        "millis" : 0,
        "indexBounds" : {
                "pets" : [
                        [
                                "dog",
                                "dog"
                        ]
                ]
        }
}
于 2013-06-09T10:59:22.493 回答