Как вы объясните отдельный запрос в MongoDB? - PullRequest
16 голосов
/ 08 декабря 2011

Как вы объясните отдельный запрос в MongoDB?

 db.test3.distinct("id", { key:"value"}).explain()

Ошибки с:

explain is not a function (shell)

Ответы [ 2 ]

21 голосов
/ 28 апреля 2016

Начиная с Mongo 3.2, вы можете делать:

db.test3.explain().distinct("id", {key: "value"})

https://docs.mongodb.org/manual/reference/method/db.collection.explain/

17 голосов
/ 08 декабря 2011

Вы не можете использовать объяснение с отличным согласно этому mongodb jira ticket . Вместо этого вы можете использовать runCommand и проверить статистику, которая похожа на explain()

 db.runCommand({ distinct: 'test3',key:'id',query:{key:"value"}})

В приведенном выше запросе test3 - это имя коллекции, ключ - это имя поля, которое вы хотите применить отдельно, и, наконец, если вы хотите указать какие-либо фильтры, используйте запрос.

Проверьте образцы

> db.runCommand({ distinct: 'items',key:'name',query:{offered:true}})
{
    "values" : [
        "test flat",
        "Another aston martin",
        "super luxury villa",
        "Aston martin vanquish y for sale",
        "Super car",
        "Test item",
        "another sports car",
        "super car"
    ],
    "stats" : {
        "n" : 8,
        "nscanned" : 10,
        "nscannedObjects" : 10,
        "timems" : 45,
        "cursor" : "BasicCursor"
    },
    "ok" : 1
}
> db.runCommand({ distinct: 'items',key:'name',query:{offered:false}})
{
    "values" : [
        "yamaha",
        "Test item"
    ],
    "stats" : {
        "n" : 2,
        "nscanned" : 10,
        "nscannedObjects" : 10,
        "timems" : 0,
        "cursor" : "BasicCursor"
    },
    "ok" : 1
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...