実行しているMongoDBクエリがありますが、必要なレコードをプルバックしていません。カテゴリと説明(contains / like正規表現を介して)の2つでフィルタリングします。カテゴリに基づいて検索すると、そのカテゴリのすべてのレコード(問題のレコードを含む)が返されますが、説明を入力すると、そのレコードを元に戻すことができません。説明テキストに一致する他のレコードが返されますが、何らかの理由で、何を入力しても、この1つのレコードを説明条件で返すことができません。それは非常に奇妙です。
MongoDBでそのようなことをデバッグするにはどうすればよいですか?私のクエリは非常に単純です:
var match = {};
var category = "hardware"
if (category)
match.Category = category;
var searchText = "ceramic"
if (searchText)
{
match.Description = new RegExp("/.*" + searchText + ".*/");
}
collection.find(match).toArray(function(err, items)
{
response.send(items);
});
私が取り戻そうとしているアイテムはハードウェアカテゴリにあり、searchTextが""のときに戻ってきます。説明に「ceramic」という単語が含まれていますが、searchTextが「ceramic」(またはその説明にある他の任意の数の単語)の場合、そのアイテムは返されません。説明に「セラミック」という言葉が含まれている他の人はそうしますが、そうではありません。もちろん、そのアイテムの構造は他のアイテムと同じです。それは本当に試合に合格するはずです。
大文字と小文字は正しく(「セラミック」は説明とフィルターの両方ですべて下がっています)、検索で大文字と小文字を区別しないように/iも試しました。
では、このクエリが非常に明確に一致するアイテムを生成できない理由をどのように見つけることができますか?