1. ホーム
  2. mongodb

[解決済み] 特定の値を含む配列で文書を検索する

2022-03-16 20:48:12

質問

こんなスキーマがあったら...。

person = {
    name : String,
    favoriteFoods : Array
}

... ここで favoriteFoods 配列には文字列が格納されます。mongoose を使って、好きな食べ物が "sushi" である人物をすべて見つけるにはどうしたらよいでしょうか?

というようなことを期待していたのですが。

PersonModel.find({ favoriteFoods : { $contains : "sushi" }, function(...) {...});

(がないことは知っています)。 $contains は、解決策を知る前に私が何を期待していたかを説明しただけです)

どのように解決するのですか?

として favouriteFoods は単純な文字列の配列なので、そのフィールドに直接クエリを発行できます。

PersonModel.find({ favouriteFoods: "sushi" }, ...); // favouriteFoods contains "sushi"

しかし、スキーマで文字列配列を明示的にすることもお勧めします。

person = {
    name : String,
    favouriteFoods : [String]
}

関連するドキュメントはこちらでご覧になれます。 https://docs.mongodb.com/manual/tutorial/query-arrays/