MongoDB
 Computer >> コンピューター >  >> プログラミング >> MongoDB

MongoDBでフィールドが数値型かどうかを確認する方法($type演算子の使い方)

MongoDBでフィールドが数値かどうか確認するには?

MongoDBにおいて、あるフィールドが数値型(intやdoubleなど)であるかどうかを判定したい場合は、$type演算子を使用します。$typeに「number」を指定すると、整数・浮動小数点数といったすべての数値型にマッチさせることができます。

基本構文

db.yourCollectionName.find({ yourFieldName: { $type: "number" } }).pretty();

サンプルコレクションの作成

まず、動作を確認するためにドキュメントを含むコレクションを作成しましょう。ここでは学生情報を格納するコレクション「checkIfFieldIsNumberDemo」を作成します。

> db.checkIfFieldIsNumberDemo.insertOne({"StudentName":"John","StudentAge":23});
{
    "acknowledged" : true,
    "insertedId" : ObjectId("5c9ec75dd628fa4220163b83")
}
> db.checkIfFieldIsNumberDemo.insertOne({"StudentName":"Chris","StudentMathScore":98,"StudentCountryName":"US"});
{
    "acknowledged" : true,
    "insertedId" : ObjectId("5c9ec77cd628fa4220163b84")
}
> db.checkIfFieldIsNumberDemo.insertOne({"StudentName":"Robert","StudentCountryName":"AUS"});
{
    "acknowledged" : true,
    "insertedId" : ObjectId("5c9ec7a4d628fa4220163b85")
}
> db.checkIfFieldIsNumberDemo.insertOne({"StudentId":101,"StudentName":"Larry","StudentCountryName":"AUS"});
{
    "acknowledged" : true,
    "insertedId" : ObjectId("5c9ec7ccd628fa4220163b86")
}

登録したドキュメントの確認

find()メソッドを使って、コレクション内のすべてのドキュメントを表示します。

> db.checkIfFieldIsNumberDemo.find().pretty();

上記のクエリを実行すると、次のような出力が得られます。

{
    "_id" : ObjectId("5c9ec75dd628fa4220163b83"),
    "StudentName" : "John",
    "StudentAge" : 23
}
{
    "_id" : ObjectId("5c9ec77cd628fa4220163b84"),
    "StudentName" : "Chris",
    "StudentMathScore" : 98,
    "StudentCountryName" : "US"
}
{
    "_id" : ObjectId("5c9ec7a4d628fa4220163b85"),
    "StudentName" : "Robert",
    "StudentCountryName" : "AUS"
}
{
    "_id" : ObjectId("5c9ec7ccd628fa4220163b86"),
    "StudentId" : 101,
    "StudentName" : "Larry",
    "StudentCountryName" : "AUS"
}

$type演算子で数値型のフィールドを検索する

それでは、実際に$type演算子を使って、指定したフィールドが数値型であるドキュメントだけを抽出してみましょう。ここでは「StudentMathScore」フィールドが数値であるドキュメントを検索します。

> db.checkIfFieldIsNumberDemo.find({ StudentMathScore: { $type: "number" } }).pretty();

実行結果を見ると、「StudentMathScore」フィールドが数値型を持つドキュメントのみが出力されていることがわかります。

{
    "_id" : ObjectId("5c9ec77cd628fa4220163b84"),
    "StudentName" : "Chris",
    "StudentMathScore" : 98,
    "StudentCountryName" : "US"
}

まとめ

MongoDBでフィールドのデータ型を判定するには、$type演算子が便利です。「number」を指定すればintやdoubleなどの数値型全般にマッチし、スキーマが柔軟なMongoDBでもデータ型の整合性チェックや条件付き検索を簡単に行えます。

  1. MongoDBコレクション内の空のフィールドをチェックする方法

    MongoDBのコレクション内に空(空文字列)のフィールドが存在するかどうかを調べたい場合、$exists演算子と$eq演算子を組み合わせて使うのが効果的です。この記事では、実際にコレクションを作成しながら、空のフィールドを持つドキュメントを検索する具体的な手順を解説します。 ポイント:$exists と $eq の組み合わせ MongoDBでは「フィールドが存在するが値が空文字列である」状態と、「フィールド自体が存在しない」「値がnullである」状態は区別されます。そのため、空文字列を正確に検索するには次のような条件を使います。 { フィールド名 : { $exists : true, $

  2. C#で数値が2の累乗かどうかを判定する方法をわかりやすく解説

    「2の累乗」とは、整数 n を用いて 2n の形で表せる数のことです。つまり、基数を2、指数を整数 n としてべき乗計算を行った結果の値を指します。代表的な2の累乗は以下の表のとおりです。n2n01122438416532このように、n = 0 のときは 20 = 1 となる点に注意してください。1 もまた2の累乗に含まれます。C#で数値が2の累乗かどうかを判定するには、主に2つのアプローチがあります。それぞれサンプルコードとともに見ていきましょう。方法1:ビット演算を使う(高速・定番)2の累乗である数をバイナリで表すと、最上位ビットだけが1になり、それ以外はすべて0になります。例えば、8 は