je crée une collection plafonnée (crawl02
) et créer un index pour ce plafonné.MongoDB _id requête sur la collection plafonnée sans index _id, la performance sera mauvaise collection
> db.system.indexes.find()
{ "v" : 1, "key" : { "_id" : 1 }, "ns" : "test.crawl02", "name" : "_id_" }
quand je runing une application et la collecte plafonnée de requête, la sortie TOUJOURS MongoDB Log
le journal de suivi:
[conn2] warning: _id query on capped collection without an _id index, performance will be poor collection: test.crawl02
.
ma déclaration de code pour interroger une collection plafonnée (C#)
var cursor = this.QueueCollection //crawl02
.Find(Query.GT("_id", this._lastId))
.SetFlags(QueryFlags.AwaitData |QueryFlags.TailableCursor
| QueryFlags.NoCursorTimeout)
.SetSortOrder(SortBy.Ascending("$natural"));
return (MongoCursorEnumerator<QueueMessage<T>>)cursor.GetEnumerator();
lire un message d'environ variable curseur:
while(true){
if (this._cursor.MoveNext())
return this._currsor.Current;
else
return null
}
Je ne comprends pas pourquoi le mongodb me déclin du crawl02
pas avoir un index.
==================================== par mise à jour
ok, i trouvé un article sur tailable Curseurs à MongoDB office website, le message est:
Tailable cursors are only allowed on capped collections and can only return objects in natural order. Tailable queries never use indexes.
qui est parce avertissement du journal de MongoDB? Tailable queries never use indexes.??
mise à jour =================== 2 désolé, j'ai oublié l'avertissement du journal de MongoDB est sur le point test.crawl02, i a changé.
Désolé, j'ai changé mon post.it à propos de test.crawl02, j'ai oublié le changement. – zhengchun