LoginSignup
6
5

More than 1 year has passed since last update.

これだけは覚えたい、MongoDBのfindメソッド

Last updated at Posted at 2021-06-13

はじめに

MongoDB をはじめて使う方向けにDB検索時の条件指定の方法をまとめました。

「これだけ覚えておけば大丈夫!」とは言えませんが、

  • DB構造の把握をしたい
  • 欲しいデータを表示したい

というときによく使用するコマンドなので覚えておいて損はないと思います。
実際には覚えるというよりはどういう風に使うんだっけ・・? ってなったときに見返せるように使っていただけたらと思います。

目次

  • はじめに

  • 目次

  • 用語の違い

  • 検索方法

    • 基本形
      • 全検索
      • ドキュメントを一つ取得
  • メソッド

    • limit()
    • sort()
    • pretty()
  • クエリ

    • {},{}
    • 特定の値を指定して検索
    • 第1引数で条件を指定
    • 第2引数で条件を指定
  • 演算子(条件指定)

    • $lte
    • $gte
    • $in
  • おわりに

  • 参考文献

    • Mongoマニュアル
    • Qiita

用語の違い

RDBとの用語の違いです。

RDB MONGO
Database Database
Table(テーブル) Collection(コレクション)
Record(レコード) Document(ドキュメント)
Column(カラム) Field(フィールド)

検索方法

DBを選択した前提で書いていきます。ここらへんのことも今後記事にしていきたいと思っていますが、今回は検索方法についてフォーカスしていきます。

基本形

  • 全検索
db.Collection.find()
  • ドキュメントを一つ取得
db.Collection.findOne()

クエリ

DATEというフィールドがあるとして話していきます。

{},{}

db.Collection.find( {field: v},{field: 0} )
  • 第1引数には条件

  • 第2引数には表示する(1) or 表示しない(0)

特定の値を指定して検索

db.Collection.find( {DATE: '20210612'},{} )

第1引数で条件を指定

db.Collection.find( {},{DATE:1} )

第2引数で条件を指定

db.Collection.find( {},{DATE:0} )

メソッド

limit()

意味 n
ドキュメントをn件取得 数字(1, 2, 3, and so on)
db.Collection.find().limit(n)

sort()

意味 n
降順 -1
昇順 1
db.Collection.find().sort( {"DATE": n} )

pretty()

読みやすい形で表示する

db.collection.find().pretty()

演算子(条件指定)

演算子 用途
$lt より小さい
$lte 以下
$gt より大きい
$gte 以上
$in いずれかを含む

$lte

選択したフィールドの値以下。
たとえば、年齢(フィールド)が20歳以下のドキュメント

db.collection.find( { age: { $lte: 20 } } )

$gte

選択したフィールドの値以上。
たとえば、年齢(フィールド)が20歳以上のドキュメント

db.collection.find( { age: { $gte: 20 } } )

$in

選択したフィールドの値を持っている。
たとえば、年齢(フィールド)が10歳か20歳のドキュメント

db.collection.find( { age: { $in: [ 10, 20 ] } } )

おわりに

すべてを網羅しているわけではありませんが、このような使い方をすれば比較的かんたんにDB検索をすることができますし、困ることが少なくなるかと思います。

「こうした方がいいんじゃない?」、「これもよく使うよ」などご意見いただけたら幸いです。

参考文献

Mongoマニュアル

Qiita

6
5
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
5