enter image description here私のuserinfoテーブル内の全フォロワーとフォロワーを取得しようとしているユーザーのアクティビティーを取得しようとしています。コレクションのすべてのドキュメントから配列リスト要素の合計数を取得する
私は以下のコマンドラインクエリを使用して、うまくいきました。合計カウントを取得しています。
db.userinfo.aggregate([
{ "$group": {
"_id": null,
"followersCount": {
"$sum": {
"$size": { $ifNull: [ "$followers", [] ] }
}
},
"followingCount": {
"$sum": {
"$size": { $ifNull: [ "$i_am_following", [] ] }
}
}
}}
])
しかし、私はこれをJavaプログラミングを使用して複製できません。 BasicDBObjectsを使ってjavaでこのクエリを書くことができますか?これを行う方法は他にありますか?
ここでは、1人のユーザーのサンプルデータを示します。
db.userinfo.insert (
{
"username" : "user1",
"useremail" : "[email protected]",
"password" : "password",
"firstname" : "firstname",
"lastname" : "lastname",
"dob" : "24-05-1992",
"followers" : [
{
"user" : "user2",
"from_date" : "2016-12-15 09:59:04"
},
{
"user" : "user3",
"from_date" : "2016-12-15 08:59:04"
}
],
"i_am_following" : [
{
"user" : "user2",
"from_date" : "2016-12-15 08:59:04"
},
{
"user" : "user3",
"from_date" : "2016-12-15 09:59:04"
}
]
})
は、あなたがこれまでに –
BasicDBObject groupFields =新BasicDBObject( "_ ID"、null)を試してみました何私たちを見ます。 \t \t \t groupFields.put( "heartCount"、新BasicDBObject( "$和"、 \t \t \t \t \t \t \t新しいBasicDBObject( "$サイズ"、新BasicDBObject( "$ IFNULL"、は、Arrays.asList( "$ hearts "、新しいArrayList <>())))))); \t \t \t BasicDBObjectグループ=新しいBasicDBObject( "$ group"、groupFields);私はたくさんの異なる方法を試しましたが、実際には機能していないこれで終わりました。 – Shravya
サンプルdocを追加することを検討してください。 – Veeram