I have a collection such as:
{u'_id': ObjectId('5094cc44e3f0f827b3618918'),
u'xxx': 0},
{u'_id': ObjectId('5094cc44e3f0f827b3618919'),
u'xxx': 1},
{u'_id': ObjectId('5094cc44e3f0f827b361891a'),
u'xxx': 2},
{u'_id': ObjectId('5094cc44e3f0f827b361891b'),
u'xxx': 3},
{u'_id': ObjectId('5094cc44e3f0f827b361891c'),
u'xxx': 4}
...
wenn ich Index zu erstellen, wie:Wie funktioniert Mongodb Index?
db.test.ensure_index([("_id",-1),("xxx",1)])
db.test.ensure_index([("xxx",1)])
dann verwende ich das erklären, wie:
db.test.find({"xxx":1}).sort("_id",-1).skip(5).limit(5).explain()
result is:
{u'allPlans': [{u'cursor': u'BtreeCursor _id_ reverse',
u'indexBounds': {u'_id': [[{u'$maxElement': 1},
{u'$minElement': 1}]]},
u'n': 9,
u'nscanned': 34,
u'nscannedObjects': 34},
{u'cursor': u'BtreeCursor xxx_1',
u'indexBounds': {u'xxx': [[1, 1]]},
u'n': 34,
u'nscanned': 34,
u'nscannedObjects': 34},
{u'cursor': u'BtreeCursor _id_-1_xxx_1',
u'indexBounds': {u'_id': [[{u'$maxElement': 1},
{u'$minElement': 1}]],
u'xxx': [[1, 1]]},
u'n': 10,
u'nscanned': 38,
u'nscannedObjects': 10},
{u'cursor': u'BasicCursor',
u'indexBounds': {},
u'n': 16,
u'nscanned': 34,
u'nscannedObjects': 34}],
u'cursor': u'BtreeCursor xxx_1',
u'indexBounds': {u'xxx': [[1, 1]]},
u'indexOnly': False,
u'isMultiKey': False,
u'millis': 1,
u'n': 5,
u'nChunkSkips': 0,
u'nYields': 0,
u'nscanned': 34,
u'nscannedAllPlans': 140,
u'nscannedObjects': 34,
u'nscannedObjectsAllPlans': 112,
u'scanAndOrder': True,
u'server': u'ubuntu:27017'}
von n, nScanned und nscnnedObjects ‚s num, ich denke, es verwenden sollte u'BtreeCursor ID -1_xxx_1 'als Cursor, aber warum es u'cursor verwenden: u'BtreeCursor xxx_1' ,? Kann mir jemand einen Vorschlag machen? Ich habe ein wenig Ahnung über den Index optimieren.
Es würde helfen, wenn Sie Beispiele in Javascript (die offizielle mongo Shell Sprache) zur Verfügung stellen. –
Das ist eine Python-Sprache.Ich möchte nur wissen, wenn ich find ('xxx'). Sort ('_ id', - 1), Wie kann ich einen Index erstellen? – halostack
Geben Sie am Ende der Indexdefinition ein Feld ein, nach dem sortiert werden soll: 'db.test.ensureIndex ({xxx: 1, _id: -1})' –