2013-08-05 60 views
0

我有如下所示的結構:查詢第一個子文檔

thread { 
    messages [ 
    { 
     sender_id: AB12CD34, 
     ...stuff... 
    }, 
    { 
     sender_id: EF56GH78, 
     ...stuff... 
    } 
    ] 
} 

我想查詢線程,其中的第一條消息的SENDER_ID是IDS的一個集合的一部分。像...

def threads_started_by_users user_ids 
    any_in('messages:first.sender_id', user_ids) 
end 

這樣的事情的正確語法是什麼樣子?這樣的查詢可能嗎?

回答

1

我不說話mongoid,但這裏是你將如何在shell做到這一點:

db.coll.find({'thread.messages.0.sender_id': {$in: user_ids}}) 

在鍵名稱的0標識messages數組的第一個元素。

+0

很酷。結束成爲'any_in('messages.0.sender_id'=> user_ids)' – Drew