2013-06-11 73 views
1

我需要獲取其ID位於數組中的用戶。爲此,我使用$ in操作符,但是這是在一個集合操作中,我想一直找回特定的用戶,它的id存在於數組中,而不僅僅是一個。例如:

The ids array is A=[a,b,c,b] and U(x) is user with id x 
with users.find({_id:{$in:A}}) i get these users as result: U(a),U(b),U(c) 
instead i'd like to get back the result: U(a),U(b),U(c),U(b) 

因此,每次出現id時都要讓用戶回來。

我知道$ in正在按預期工作,但是有沒有人有關於我如何實現這一點的想法?

謝謝

+0

'$ in'查詢將返回_all_匹配的文檔,而不僅僅是每個文檔中的第一個;所以它應該已經在做你想做的了。 – JohnnyHK

+1

_id具有唯一的索引,因此集合中不能有多個具有相同_id值的文檔。如果在$ in [array]中提到兩次_id,我懷疑你想要的是爲同一個文檔返回兩次。 –

+0

@JohnnyHK:實際上不是,按照我所描述的那樣工作,它與單詞「in」的含義完全一致作爲事實 – Peterdeka

回答

1

這是不可能使用MongoDB查詢。

MongoDB的查詢引擎遍歷集合中的文檔(如果存在有用的文檔,則通過索引進行迭代),並按照查找它們的順序返回與您的查詢匹配的任何文檔。 b是否在您的查詢中出現一次,兩次或一百次都沒有區別:b_idb匹配的文檔與MongoDB發現它時返回一次。

您可以使用您的編程語言執行後處理步驟,以根據需要多次重複文檔。

+0

我以爲相同但是作爲最後的手段我在這裏問:D – Peterdeka

相關問題