2014-09-25 66 views
0

對不起這個問題的含糊不清,我真的不知道如何改寫它。問題是關於MongoDB和存儲在其中的信息。MongoDB指針或實際副本?

我有用戶的集合:

use mydb 
db.users.insert({name:"whatever", follow:[]) 
db.users.insert({name:"whatever2", follow:[]) 

我希望用戶遵循另:

var userToFollow = db.users.findOne({name:"whatever2"}); 
db.users.update({name:"whatever"}, {$push:{follow:userToFollow}}); 
/* 
* I know that in reality, this query will return more than one user, 
* but as I'm letting mongo create the ids, I don't actually know a better approach. 
* Please enlighten me. 
*/ 

這就是那種我在考慮做後續的方式。但我有類似的問題,是將所有用戶複製到後續數組還是實際存儲了一個指向該用戶的指針,並且在通過查詢訪問時它會以某種方式檢索它?另外,有沒有更好的方法來做到這一點?

回答

1

這是你的方式實際複製。正如您在手術後可以檢索到的一樣。
如果您想快速訪問follow中的內容,那就是您完成的方式,否則您可以將其作爲_id的數組存儲。

+0

你知道是否有更好的方法來做到這一點(推送一個Id到一個數組)比做兩個查詢嗎?如果它是一個副本,這意味着我可以擁有未更新的數據,您是否知道解決該問題的方法? – camou 2014-09-25 15:50:30

+0

根據我對您的操作的理解,是否可以通過直接將'name'存儲到'follow'來實現您的目標?也就是'db.user.update({name:「whatever」},{$ addToSet:{follow:「whatever2」}})'。 – Wizard 2014-09-26 00:57:56

+0

是的,這就是我目前所做的,我認爲可能有更好的方法。看起來不是。謝謝@Wizard。 – camou 2014-09-26 18:12:05