2012-05-18 2 views
0

Схема:Обновления по документам в коллекции MongoDB

/* 0 */ 
    { 
     "_id" : ObjectId("4fb6376ef31dfd11c41c7fd0"), 
     "Name" : "A", 
     "Val" : "#rt45" 
    } 

    /* 1 */ 
    { 
     "_id" : ObjectId("4fb655aff31dfd11c41c7fd1"), 
     "Name" : "B", 
     "Val" : "#gh46" 
    } 

    /* 2 */ 
    { 
     "_id" : ObjectId("4fb65626f31dfd11c41c7fd2"), 
     "Name" : "C", 
     "Val" : "#rt67" 
    } 

я должен вставить данные в «Имени» и хочу запросить, что он должен проверить, если значения поля «Name» (здесь A, B, C) присутствует или нет, если есть необходимость пропустить из вставки Надеюсь, кто-то может помочь в этом, я нахожусь на C# -модере. Пожалуйста, поделитесь примером кода. Спасибо заранее. Я был на этом

IMongoQuery query = Query.Exists("_id", true); 
       var fields = Fields.Include("Name"); 
       var result = collection.Find(query).SetFields(fields).SetLimit(1).FirstOrDefault(); 
+0

Пожалуйста, покажите, что вы пробовали до сих пор. – Reniuz

+0

Здесь я хочу проверить значение поля в поле «Имя», поскольку вставка происходит вокруг БД из источника данных, значение уже присутствует в соответствии с «Имя» или нет. – Jafar

+0

Измените свой вопрос и переместите код с комментария на ваш вопрос. – Reniuz

ответ

0

Вы можете позвонить в Find сначала и посмотреть, есть ли документ с тем же значением имени, а затем вызвать только Insert, если Find ничего не возвращает. Это было бы небезопасно, если бы несколько процессов или потоков выполняли одно и то же.

Другой способ - создать уникальный индекс для имени и просто вставить. Вставка завершится с ошибкой, если другой документ уже существует с тем же именем.

0

FindAndModify способ в MongoDB для запроса и обновления на одном дыхании.

Другой способ заключается только пользователь Update

Collection.Update(Query. ..., Update.Set()) 

Второй можно, если вся информация для новой должности существует также создать сообщение, если он не будет найден в запросе.

Если вы попытаетесь написать шаг за шагом пример того, что вы пытаетесь сделать (на простом английском языке), я мог бы написать пример для C#.

+0

Словарь содержит данные для вставки, вызывая этот метод public void InsertData (Dictionary словарь), при вставке должно быть условие, если данные из словаря уже существуют в БД, а затем обновляются. – Jafar

Смежные вопросы