2012-05-18 191 views
0

模式:更新字段值

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

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

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

我要插入數據「名稱」,並希望查詢,它應該檢查「名稱」字段(這裏的值是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

您可以先查找並查看是否已有一個具有相同名稱值的文檔,然後只在查找返回任何內容時才調用Insert。如果多個進程或線程正在做同樣的事情,這將是不安全的。

另一種方法是在名稱上創建一個唯一索引,然後執行插入操作。如果另一個文檔已經存在具有相同的名稱值,插入將失敗。

0

FindAndModify是MongoDB中的方式來查詢和更新一氣呵成。

另一種方法是隻用戶更新

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

第二個可以,如果所有信息爲一個新的職位還存在創建後,如果它不被查詢中找到。

如果您嘗試編寫您正在嘗試做的一步一步示例(用簡單的英語),我可能會爲C#編寫一個示例。

+0

字典包含要插入的數據,調用此方法public void InsertData(Dictionary 字典),而插入那裏應該是一個條件,如果數據庫中已經存在字典數據然後更新。 – Jafar