2012-12-10 54 views
0

我們有一組用戶在MongoDB中提交的帖子,他們可以由其他用戶「加星標」。我想知道實現這個目標的最好方法是什麼?跟蹤與MongoDB共享收藏中每個用戶的「加星標」項目

我的第一個猜測將是把用戶ID陣列上已出演過像這樣一個帖子:

{ 
    created:Date 
    title:String 
    content:String 
    ... 
    starred_by:[ObjectId] // Array of users by id that have starred the post 
} 

然後,當我們做一個find()方法,我想通過訂購:

$sort: { 
    starred_by:{$in:[session.user_id]}, 
    created:-1 
} 

這可能嗎?我正在努力尋找關於它的任何文檔。我們確實需要首先按'starred_by'字段排序的搜索結果,以便星號結果首先出現,然後按創建日期排序。

感謝

回答

1

我建議你把它們放到一個單獨的集合

{ item : ObjectID, user: ObjectID, starred_on : Date } 

的原因是,一個項目可能潛在地被大量的用戶,並且出演您的項目文件可能超出文件限制尺寸(16MB)。

我不完全確定你的查詢是幹什麼的(顯示由給定用戶出演的最新文章?)。如果您想展示給定用戶(mongodb外殼)主演的最新項目:

db.starred.find({ user : session.user_id, }).sort([starred_on, -1])