2016-05-30 3 views
0

Ich habe folgende Schema-Definition:Wie stoppe ich die automatische Indizierung von _id mit Mungo?

var mongoose = require('mongoose'); 
var Schema = mongoose.Schema; 
var EmpSchema = new Schema({ 
    EmpName: {type: String}, 
    EmpRefered : {type: [String]}, 
}); 

So, jetzt _id erzeugt automatisch und wird automatisch indiziert. Aus bestimmten Gründen auf einige der Schema Ich will nicht Index auf sogar _id Feld.

Um dies zu tun ich den folgenden Code versucht:

options = {config:{autoIndex:false}}; 
var db2 = mongoose.createConnection('mongodb://localhost/DBName', options); 

Gemäß der API docs sollte es Arbeit sein. Könnte jemand etwas Licht machen, wenn ich etwas vermisse oder auf eine andere Weise dasselbe mache?

Hinweis: Aber ich würde nicht lieber native Treiber und Befehl ziehen, um alle Indizes fallen zu lassen.

+4

[Sie nicht den _id Index entfernen] (https://docs.mongodb.com/v3.2/indexes/#default-id-index) – joao

+0

@joao, deaktivieren Sie können in der Tat Index auf '_id' Feld. Siehe https://docs.mongodb.com/manual/reference/method/db.createCollection/ – Saleem

+1

@Saleem Die autoIndexId ist veraltet und wird in Version 3.4 entsprechend der gerade verlinkten Dokumentseite entfernt. – joao

Antwort

2

Nun, ich bin mir nicht sicher, ob Sie Auto Index auf _id in Mungo deaktivieren können, aber Sie können es tatsächlich von mongo shell deaktivieren. Beachten Sie jedoch, dass diese Einstellung auf Sammlungsebene angewendet wird.

Sie erstellen eine Sammlung mit benutzerdefinierten Optionen.

db.createCollection('collection', {autoIndexId: false}) 

jedoch bedenken, dass, wenn Sie die automatische Indizierung deaktivieren auf _id, Replikation wird nicht funktionieren.

Bitte sehen db.createCollection()

+0

plus1 für den Shell-Befehl und Warnung über die Replikation –