-6
コレクションの状態:
    [
        {   
            _id: '1',
            StatusName: '....',
            コメント: [
                        {
                            id_: '2',
                            CommentName: '.....',
                            いいね: ['user1', 'user2', 'user3']
                        }、
                        {
                            id_: '3',
                            CommentName: '.....',
                            いいね: ['user2', 'user3']
                        }
                    ]
        }、
        {   
            _id: '3',
            StatusName: '....',
            コメント: [
                        {
                            id_: '4',
                            CommentName: '.....',
                            Likes: ['user1', 'user2', 'user3', 'user4']
                        }、
                        {
                            id_: '5',
                            CommentName: '.....',
                            いいね: ['user1', 'user3']
                        }
                    ]
        }

    ]

Comment _id = '2' および Status _id: '1' のLikeの数が必要です

4

1 に答える 1

1

1 つの方法は、集計フレームワークを使用することです。

db.status.aggregate(
[
  {$match : {_id : "1", }}, 
  {$unwind: "$Comments"}, 
  {$match: {"Comments.id_": "2"}},
  {$unwind: "$Comments.Likes"},
  {$group: {_id: {"statusId":"$_id","CommentId":"$Comments.id_"}, 
            "likes": {$sum:1}}
  }
] )
于 2013-01-29T06:19:15.460 に答える