2011-08-11 37 views
6

我正在建立一個數據庫與幾個集合。我打算使用主集合中所有文檔的獨特字符串。其他集合中的文檔將引用主集合中的文檔,這意味着我必須將該ID保存在其他集合中。但是,如果_id只需要在集合中唯一而不是在整個數據庫中,那麼我只會讓其他集合中的_id也使用上述唯一字符串。在MongoDB中,文檔_id是否需要在集合或整個數據庫中是唯一的?

此外,我假設爲了設置我自己的_id,我所要做的就是將"_id":"unique_string"屬性作爲我插入的文檔的一部分,正確嗎?我不需要將「unique_string」轉換爲另一種格式,對吧?

此外,假設地說,我將能夠有一個變量保存字符串「_id」,並使用它呢?只需要清楚,如下所示:var id = "_id",然後在代碼中(例如在插入或查詢期間)具有id:"unique_string"

最佳,和感謝,
薩米

回答

9

_id■找是一個集合中是唯一的。您可以通過在兩個不同的集合中插入兩個具有相同_id的文檔來快速驗證此情況。

您的其他假設是正確的,只是嘗試它們,看看它們是否工作(他們會)。布丁的證明是在吃東西。

注意:直接使用_idvar id = "_id"只是編譯代碼。

+0

謝謝!我想你是對的 - 我可以很容易地自己嘗試一下。此外,id =「_id」問題更多地是針對給定文檔中的其他潛在關鍵字,而不是「_id」本身。如果它適用於其中一個,它將適用於其他人。謝謝你的迴應!我很感激! – thisissami

+0

嗨yi_H,我只是想讓你知道你答案的後半部分是不正確的。你不能用變量來表示鍵 - 至少不是直接的。如果您想對這些行中的變量進行任何操作,您必須提前保存文檔並將該文檔傳遞到查詢中。 – thisissami

+0

@thisissami:我不明白你......我可以想到爲什麼它不起作用的一些原因,例如:在javascript對象中,關鍵部分被解析爲一個字符串(這就是爲什麼你永遠不必引用它)。你可以用'id =「_ id」; doc = {...}; doc [id] = value;' –

相關問題