在 posts(文章) 集合中儲存對該文章點讚的用戶的 _id 的數組,例如:javascript
// posts { _id: ObjectID('4e7020cb7cac81af7136236b'), users_like_this_post: [ ObjectID('4e7020cb7cac81af71362361'), ObjectID('4e7020cb7cac81af71362362') ] }
查對一個文章點讚的用戶:java
post = db.posts.findOne({_id: ObjectID('4e7020cb7cac81af7136236b')}); console.log(post.users_like_this_post);
查一個文章的點贊數量:segmentfault
post = db.posts.findOne({_id: ObjectID('4e7020cb7cac81af7136236b')}); console.log(post.users_like_this_post.length);
查點贊過 100 的文章:數組
posts = db.posts.find({'users_like_this_post.100': {$exists: true}});
查 user 點贊過的文章:less
posts = db.posts.find({users_like_this_post: user._id});
user 對 post 點贊:post
db.posts.update({_id: post._id}, {$addToSet: {users_like_this_post: user._id}});
user 對 post 取消點贊:this
db.posts.update({_id: post._id}, {$pull: {users_like_this_post: user._id}});
參考 https://segmentfault.com/q/1010000000663821