MongoDBでクエリを高速化するための大きなテキストフィールドのインデックス作成
大きなテキストフィールドにインデックスを付けるには、テキスト検索に$ regexとともにensureIndex()を使用します。ドキュメントを使用してコレクションを作成しましょう-
> db.demo46.ensureIndex({"Name":1});
{
"createdCollectionAutomatically" : true,
"numIndexesBefore" : 1,
"numIndexesAfter" : 2,
"ok" : 1
}
> db.demo46.insertOne({"Name":"John Smith"});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e267004cfb11e5c34d898ed")
}
> db.demo46.insertOne({"Name":"John Doe"});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e267009cfb11e5c34d898ee")
}
> db.demo46.insertOne({"Name":"Chris Brown"});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e267011cfb11e5c34d898ef")
} find()メソッドを使用してコレクションからすべてのドキュメントを表示する-
> db.demo46.find();
これにより、次の出力が生成されます-
{ "_id" : ObjectId("5e267004cfb11e5c34d898ed"), "Name" : "John Smith" }
{ "_id" : ObjectId("5e267009cfb11e5c34d898ee"), "Name" : "John Doe" }
{ "_id" : ObjectId("5e267011cfb11e5c34d898ef"), "Name" : "Chris Brown" } 以下は、クエリを高速化するために大きなテキストフィールドにインデックスを付けるためのクエリです-
> db.demo46.find({ Name: { $regex:/^John/}}); これにより、次の出力が生成されます-
{ "_id" : ObjectId("5e267009cfb11e5c34d898ee"), "Name" : "John Doe" }
{ "_id" : ObjectId("5e267004cfb11e5c34d898ed"), "Name" : "John Smith" } -
他のフィールドがnullの場合に一方のフィールドを選択するMongoDBクエリ?
もう一方がnullの場合に一方のフィールドを選択するには、$ifNullを使用します。ドキュメントを使用してコレクションを作成しましょう- > db.demo182.insertOne({"FirstName":"Chris","LastName":null}); { "acknowledged" : true, "insertedId" : ObjectId("5e398ea19e4f06af55199802") }
-
idがドキュメントフィールドの配列値と等しい場合に除外するMongoDBクエリ
このために、$inと一緒に$notを使用します。ドキュメントを使用してコレクションを作成しましょう- [ { id: "101", subjectid: [ "102" ] }, { id: "102", &nb