2013-04-17 62 views
0

我有一個用戶文檔,用戶可以將自己的字段添加到此文檔中。這些字段在默認情況下是未命名的(因爲用戶只通過單擊按鈕來創建它們),但是可以在通過單獨的操作創建後由用戶重命名。如何在MongoDB中查找和使用最近未使用的字段名稱?

如果我想找到最近的匿名密鑰:(在這種情況下,它將是未命名-4),並將其插入到文檔中,我該怎麼做?

或者我應該使用更好的數據模型/方法嗎?

Users.update(id, { 
    $set: { 
     profile: { 
      userfields: { 
       owned: { 
        unnamed-1 : "field1", 
        unnamed-2 : "field1", 
        unnamed-3 : "field3", 
        mynamedfield : field 4 
      } 
     } 
    } 
}); 

回答

0

只需使用數組而不是映射爲擁有的數組,並在更新時使用$ push命令,以防需要添加另一個映射。

Users.update(id, { 
$set: { 
    profile: { 
     userfields: { 
      owned: { 
       unnamed: [ 
       "field1", 
       "field1", 
       "field3" ], 
       named: "field 4" 
     } 
    } 
} 

});

db.Users.update(
       { id: id }, 
       { $push: { 'profiles.userfields.owned.unnamed': 'field4' } } 
      ) 
+0

你仍然需要掃描完整的數組以找出'field4'可用,不是嗎? – WiredPrairie

+0

@WiredPrairie不,在這種情況下,只需要掃描任何東西,它將是'unnamed [4]'而不是'unnamed4'。 – vittore

+0

但是當其中一個痕跡被刪除時,它會重複嗎?正如數據所示,我假設未命名的鍵具有值。 – WiredPrairie

相關問題