MongoDB

mongoでfind-limitを使った際のcountについて

More than 5 years have passed since last update.

一瞬「なんで!?」ってなるからメモ。


console

> db.sorich.find({ "admin_user_id" : 2})

{ "_id" : ObjectId("******001"), "hoge_id" : 1, "satousan" : 2 }
{ "_id" : ObjectId("******002"), "hoge_id" : 2, "satousan" : 2 }
{ "_id" : ObjectId("******003"), "hoge_id" : 3, "satousan" : 2 }
> db.sorich.find({ "satousan" : 2}).limit(1)
{ "_id" : ObjectId("******001"), "hoge_id" : 1, "satousan" : 2 }
> db.sorich.find({ "satousan" : 2}).limit(1).count()
3

limitで1件に絞ってるのに、countの結果が3件。

つまりlimitしても条件に合致した件数を返すようになっている。

対処はシンプルで


console

> db.sorich.find({ "satousan" : 2}).limit(1).count(true)

1

引数に真偽値:trueをおけばOK