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

MongoDBで配列(リスト)が空でないかどうかを確認する方法

MongoDBでドキュメント内の配列(リスト)が空でないことを確認したい場合には、$size 演算子と $not 演算子を組み合わせて使用します。この記事では、実際にサンプルコレクションを作成しながら、具体的な手順を解説します。

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

まず、insertOne() メソッドを使って、テスト用のコレクションに複数のドキュメントを挿入します。ここでは、要素数の異なる配列や空の配列、null を含む配列など、さまざまなパターンを用意しました。

> db.checkIfListIsNotEmptyDemo.insertOne({"UserFriendGroup":["John","David"]});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5cdd99e8bf3115999ed511f7")
}
> db.checkIfListIsNotEmptyDemo.insertOne({"UserFriendGroup":["Carol"]});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5cdd99e9bf3115999ed511f8")
}
> db.checkIfListIsNotEmptyDemo.insertOne({"UserFriendGroup":[]});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5cdd99ebbf3115999ed511f9")
}
> db.checkIfListIsNotEmptyDemo.insertOne({"UserFriendGroup":[null]});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5cdd99f2bf3115999ed511fa")
}
> db.checkIfListIsNotEmptyDemo.insertOne({"UserFriendGroup":[]});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5cdd99f6bf3115999ed511fb")
}

挿入したドキュメントの確認

find() メソッドに pretty() を組み合わせると、コレクション内のすべてのドキュメントを見やすい形式で表示できます。

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

上記のクエリを実行すると、以下のような出力が得られます。2つのドキュメントには空の配列が含まれている点に注目してください。

{
   "_id" : ObjectId("5cdd99e8bf3115999ed511f7"),
   "UserFriendGroup" : [
      "John",
      "David"
   ]
}
{
   "_id" : ObjectId("5cdd99e9bf3115999ed511f8"),
   "UserFriendGroup" : [
      "Carol"
   ]
}
{ "_id" : ObjectId("5cdd99ebbf3115999ed511f9"), "UserFriendGroup" : [ ] }
{
   "_id" : ObjectId("5cdd99f2bf3115999ed511fa"),
   "UserFriendGroup" : [
      null
   ]
}
{ "_id" : ObjectId("5cdd99f6bf3115999ed511fb"), "UserFriendGroup" : [ ] }

配列が空でないドキュメントを取得するクエリ

配列が空でないドキュメントだけを抽出するには、{'$not': {'$size': 0}} という条件を使用します。$size: 0 は「要素数が0(=空の配列)」に一致する条件であり、それを $not で否定することで、「空ではない配列を持つドキュメント」を取得できます。

> db.checkIfListIsNotEmptyDemo.find({'UserFriendGroup': {'$not': {'$size': 0}}});

実行結果は以下のとおりです。空の配列だった2件のドキュメントが除外され、要素を持つ3件のドキュメントのみが出力されていることがわかります。

{ "_id" : ObjectId("5cdd99e8bf3115999ed511f7"), "UserFriendGroup" : [ "John", "David" ] }
{ "_id" : ObjectId("5cdd99e9bf3115999ed511f8"), "UserFriendGroup" : [ "Carol" ] }
{ "_id" : ObjectId("5cdd99f2bf3115999ed511fa"), "UserFriendGroup" : [ null ] }

なお、null を含む配列も「空ではない」と判定されるため、結果に含まれる点に注意してください。値そのものの有無までチェックしたい場合は、別途 $elemMatch$gt などの条件を組み合わせる必要があります。

  1. Swiftでテキストフィールド(UITextField)が空かどうかを簡単に確認する方法

    Swiftでテキストフィールドが空かどうかを確認する基本Swiftでは、テキストフィールド(UITextField)が空かどうかを判定するのは非常に簡単です。ポイントは2段階のチェックです。まずテキストフィールドに値が存在するか(nilでないか)を確認し、その上で文字列が空文字かどうかを見ます。ここでは、テキストフィールドの変数名を myTextField として説明します。以下のように記述できます。if let text = myTextField.text, !text.isEmpty {    // テキストフィールドに文字が入力されている} el

  2. 【Android】SQLiteでカーソルから取得したArrayListが空かどうか判定する方法

    本題に入る前に、AndroidにおけるSQLiteデータベースについて簡単におさらいしておきましょう。AndroidのSQLiteデータベースとはSQLiteはオープンソースのSQLデータベースで、デバイス上のテキストファイルにデータを保存します。Androidには標準でSQLiteデータベースの実装が組み込まれており、リレーショナルデータベースの基本的な機能をすべて利用できます。また、JDBCやODBCのようなドライバ接続を確立する必要がないため、追加の設定なしですぐに使い始められるのも大きな特徴です。この記事では、SQLiteから取得したカーソル(Cursor)のデータを格納したArray