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

ドットを含むキーを持つレコードを検索するMongoDBクエリ?


これには、$addFieldsを使用します。その中で、$ objectToArrayを使用して、キーと値の形式でデータを取得します。 $filterと$indexOfBytesを使用して、のキーがあるかどうかを確認します。その中。

まず、ドキュメントを使用してコレクションを作成しましょう-

> db.demo364.insertOne(
...   {
...       "details" : {
...          "details1.otherdetails.Name" : {"FirstName":"Chris" }
...       }
...    }
... );
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e57d485d0ada61456dc936d")
}
> db.demo364.insertOne(
...    {
...       "details" : {
...          "details1.otherdetails.Name" : {"FirstName":"David" }
...       }
...    }
... );
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e57d486d0ada61456dc936e")
}

find()メソッドを使用してコレクションからすべてのドキュメントを表示する-

> db.demo364.find();

これにより、次の出力が生成されます-

{ "_id" : ObjectId("5e57d485d0ada61456dc936d"), "details" : { "details1.otherdetails.Name" : { "FirstName" : "Chris" } } }
{ "_id" : ObjectId("5e57d486d0ada61456dc936e"), "details" : { "details1.otherdetails.Name" : { "FirstName" : "David" } } }

以下は、ドットを含むキーを持つレコードを検索するためのクエリです-

> db.demo364.aggregate([
...    {
...       $addFields: {
...          result: {
...             $filter: {
...                input: { $objectToArray: "$details" },
...                cond: {
...                   $ne: [ { $indexOfBytes: [ "$$this.k", "." ] } , -1 ]
...                }
...             }
...          }
...       }
...    },
...    {
...       $match: {
...          $expr: {
...             $ne: [ { $size: "$result" }, 0 ]
...          }
...       }
...    },
...    {
...       $project: {
...          result: 0
...       }
...    }
... ])

これにより、次の出力が生成されます-

{ "_id" : ObjectId("5e57d485d0ada61456dc936d"), "details" : { "details1.otherdetails.Name" : { "FirstName" : "Chris" } } }
{ "_id" : ObjectId("5e57d486d0ada61456dc936e"), "details" : { "details1.otherdetails.Name" : { "FirstName" : "David" } } }

  1. 価格が特定の値未満のMongoDBレコードを検索する

    価格が特定の値未満のレコードを確認するには、$ltを使用します。ドキュメントを使用してコレクションを作成しましょう- > db.demo728.insertOne({Price:75}); {    "acknowledged" : true,    "insertedId" : ObjectId("5eab413c43417811278f589b") } > db.demo728.insertOne({Price:59}); {    "acknowl

  2. MySQLを使用したLIKEクエリで%文字のレコードを検索する

    まずテーブルを作成しましょう- mysql> create table DemoTable742 (Value varchar(100)); Query OK, 0 rows affected (2.91 sec) 挿入コマンド-を使用して、テーブルにいくつかのレコードを挿入します mysql> insert into DemoTable742 values('632535MIT'); Query OK, 1 row affected (0.23 sec) mysql> insert into DemoTable742 values('US%UK&#