я создаю ограниченную коллекцию (crawl02
) и создаю индекс для этой ограниченной.
> db.system.indexes.find()
{ "v" : 1, "key" : { "_id" : 1 }, "ns" : "test.crawl02", "name" : "_id_" }
при запуске приложения и закрытой коллекции запроса MongoDB Log
ВСЕГДА выводит следующий журнал:
[conn2] warning: _id query on capped collection without an _id index, performance will be poor collection: test.crawl02
.
мой оператор кода для запроса закрытой коллекции (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();
чтение сообщения о переменной курсора:
while(true){
if (this._cursor.MoveNext())
return this._currsor.Current;
else
return null
}
Я не понимаю, почему у mongodb crawl02
нет индекса.
=================================== по обновлению
хорошо, я нашел статью о настраиваемых курсорах на веб-сайте офиса MongoDB , сообщение:
Tailable cursors are only allowed on capped collections and can only return objects in natural order. Tailable queries never use indexes.
это из-за предупреждения журнала mongodb?Tailable queries never use indexes.??
=================== обновление 2 извините, я забыл предупреждение журнала mongodb о test.crawl02, я изменился.