0

There are Post collection data.

{"_id" : 1
,"subject" : "post1"
,"usersLiking": [
  {"user_id" : "user_id_01", "username" : "user01"}
  {"user_id" : "user_id_02", "username" : "user02"}
 ]
,"usersDisliking": [
  {"user_id" : "user_id_03", "username" : "user03"}
  {"user_id" : "user_id_04", "username" : "user04"}
  {"user_id" : "user_id_05", "username" : "user05"}
 ]
}
,{"_id" : 2
,"subject" : "post2"
,"usersLiking": [
  {"user_id" : "user_id_01", "username" : "user01"}
 ]
,"usersDisliking": [
  {"user_id" : "user_id_03", "username" : "user03"}
  {"user_id" : "user_id_04", "username" : "user04"}
 ]
}

I hope output below.

{"_id" : 1, "usersLikingCount" : 2, "usersDislikingCount" : 3}
{"_id" : 2, "usersLikingCount" : 1, "usersDislikingCount" : 2}

This is so complex to me. I want to get count of multiple embeded document. What does query? Thanks.

Neil Lunn
  • 148,042
  • 36
  • 346
  • 317

1 Answers1

0

Try this

db.collectionName.aggregate({"$project":{"usersLikingCount":{"$size":"$usersLiking"},"usersDislikingCount":{"$size":"$usersDisliking"}}})

Neo-coder
  • 7,715
  • 4
  • 33
  • 52