2012-03-29 115 views
1

我想在使用php的MongoDB中的字段中添加自動增量值,而不使用計數記錄,下一個數字(count + 1)將作爲我的增量值... 或者是否有任何在mongodb,php例如一個客戶有多個電子郵件和地址,然後我們可以存儲它像email[{1:'[email protected]',2:'[email protected]'},...]address[{1:'Indore',2:'Dewas'},...]也相同因此爲了唯一性,我想設置自動增量值從每個電子郵件和地址..如何創建自動增量字段

回答

2

這是可能的,如果你創建了兩個collections

首先存儲領域whichyou要創建自動增量數

// Inserting 2 records for which we want to create auto-increment numbers 
db.autoincrementcollection.insert({ 
    field_id: "register_id", 
    nextId: 0 
}, 
{ 
    field_id: "user_id", 
    nextId: 0 
}); 

// Function is used to get the next autoincremented value 
function getNextId(field) 
{ 
    var ret = db.autoincrementcollection.findAndModify({ 
     query: { field_id: field }, 
     update: { $inc: { nextId: 1 } }, 
     new: true 
    });  
    return ret.nextId; 
} 

第二要在其中同時使用PHP代碼,那麼你可以使用find()和/或update()

參考文檔create-an-auto-incrementing-field

+0

你怎麼用PHP實現上面的? – Slimshadddyyy 2014-09-26 04:09:32

0
使用遞增的編號類似

// inserting data in registration collection with register_id auto-increment number 
db.registration.insert({ 
    _id: getNextId("register_id"), 
    fname: "Rohan", 
    lname:"Kumar" 
}); 
// inserting data in user collection with user_id auto-increment number 
db.users.insert({ 
    _id: getNextId("user_id"), 
    name: "Rohan Kumar" 
}); 

findAndModify()可能無法正常工作

這是可能的,我們必須得到最大id表格集合

db - > collection - > find() - > sort(array('id'=> -1)) - > limit(1)

它返回最大id數組。添加db ['id'] + 1;

每次都不需要存儲mongo中的自動增量id