2012-03-02 8 views
1

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é.

Répondre

1

L'erreur indique que vous n'avez aucun index sur test.crawl01. C'est correct. Lorsque vous faites db.system.indexes.find() vous avez un index sur le champ _id sur test.crawl02 pas test.crawl01 Créer un index sur test.crawl01.

+0

Désolé, j'ai changé mon post.it à propos de test.crawl02, j'ai oublié le changement. – zhengchun

Questions connexes