MongoDBで特定の条件に合致する件数を知りたい場合は、countDocuments()メソッドを使うことができる。今回countDocuments()を使おうとすると以下のエラーとなった。
事象
E QUERY [thread1] TypeError: db.hogecollections.countDocuments is not a function :
@(shell):1:1
実行したクエリはこちら
db.users.countDocuments({ age: { $gt: 18 } }); // 年齢が18歳以上のユーザーをカウント
原因
主に、countDocuments()メソッドが存在しないMongoDBのバージョンを使っているか、MongoDBのドライバーが適切に設定されていない場合があるが、今回はMongoDBのバージョンが古すぎるのが原因だった。
MongoDB Enterprise > db.version(); //バージョンを確認
3.6.23
countDocuments()メソッドはMongoDB 4.0以降で使用可能なもよう。
代替案
find()メソッドとcount()メソッドを組み合わせて件数を取得する
※ただし、count()
メソッドは非推奨とされており、将来的に削除される可能性があるため、素直にMongoDBのバージョンアップを行うことをおすすめ!!
db.users.find({ age: { $gt: 18 } }).count(); // 年齢が18歳以上のユーザーをカウント