2012-08-30 53 views
3

我對MongoDB(和mongoDB查詢)很陌生,所以我有一個問題,我將如何寫一個查詢做下面的事情...我該如何做這個mongodb查詢?通過收集的孩子搜索

有了像我這樣的架構說明如下...我將如何返回僅由特定用戶收集的所有帖子評論?例如,我需要這樣的東西來生成用戶評論列表,例如他們自己的個人資料頁面。然而,我打算將評論留作職位的子女,而不是用戶的孩子。我假設我不需要保留多餘的評論記錄,並且這個查詢是可能的(可能很簡單,但我是一個新手)。

{ title: "someTitle", 
    author: "someAuthor", 
    created: Date, 
    comments: [{authorId: objectId, content: "commentContent"},{authorId: objectId, content: "commentContent"}], 
    postContent: "This is the content of the post" 
} 
+0

是否要列出authorsId相同或作者相同的評論? –

回答

3

對於這樣的情況要好得多提出意見單獨收集:

comments 
{ 
    authorid, 
    postId, 
    content 
} 

然後,你可以輕鬆查詢的評論:

db.comments.find({authorid: 5}); 

你的模式是行不通的爲您的企業或將給你一些痛苦。

1

這個模式這個模式不是最好的解決方案,我會去兩次單獨收集評論或存儲評論。但隨着蒙戈DB 2.2,你可以用下面聚集查詢做到這一點:

db.articles.aggregate(
    {$unwind : '$comments'}, 
    {$match : {'comments.authodId' : 'authodId'}}, 
    {$project : {comments : 1}}); 

同時請documentation