MongoDB C # offic. Список <BsonObject>вопрос запроса и всегда старые значения? - PullRequest
0 голосов
/ 23 февраля 2011

У меня не возникла четкая проблема во время запроса с использованием двух критериев, таких как Id и Other.Я использую репозиторий, хранящий некоторые данные, такие как id, iso, value.Я создал индекс ("_ id", "Iso") для выполнения запросов, но запросы возвращают мой курсор, только если я использую только один критерий, такой как _id, но ничего не возвращаю, если используется два (_id, Iso) (закомментированный код).
Индекс, влияющий на ответ, или метод запроса не работают?
use: v1.6.5 и C # official.

Sample.

//Getting Data
public List<BsonObject> Get_object(string ID, string Iso)
{
    using (var helper = BsonHelper.Create())
    {
        //helper.Db.Repository.EnsureIndex("_Id","Iso");
        var query = Query.EQ("_Id", ID);
        //if (!String.IsNullOrEmpty(Iso))
        //    query = Query.And(query, Query.EQ("Iso", Iso));
        var cursor = helper.Db.Repository.FindAs<BsonObject>(query);
        return cursor.ToList();
    }
}

Данные:

{  
    "_id": "2345019",  
    "Iso": "UK",  
    "Data": "Some data"  
}

После этого я обновил свои данные с помощью методов Update.Set ().Я могу видеть измененные данные, используя MongoView.Новые данные верны, но запрос всегда возвращает те же самые старые значения.Чтобы увидеть эти значения, я использую страницу, которая может в конечном итоге кэшироваться, но если добавить отметку времени в конце, ничего не меняется, страница всегда возвращает те же старые данные.Ваши комментарии приветствуются, спасибо.

1 Ответ

0 голосов
/ 23 февраля 2011

Я не припомню, как драйвер C # создает индексы, но команда оболочки для создания индекса выглядит так:

db.things.ensureIndex({j:1});

Обратите внимание на «1», как если бы вы сказали «истина».

В вашем коде у вас есть:

helper.Db.Repository.EnsureIndex("_Id","Iso");

Возможно, это должно быть:

helper.Db.Repository.EnsureIndex("_Id", 1);
helper.Db.Repository.EnsureIndex("Iso", 1);

Это также может быть связано с тем, что вы создаете индексы для "_Id", а поле фактического идентификатора называется "_id" ... MongoDB чувствителен к регистру.

Быстрый просмотр документации индекса: http://www.mongodb.org/display/DOCS/Indexes

...