Я хочу найти документы в своей коллекции, используя массив firstNames. Если я делаю это простым MongoDB, в документации говорится, что я должен использовать $ in. Но когда я использую Mongoose, кажется, что $ in не нужен.
Установка:
const Person = mongoose.model('person', new mongoose.Schema({
firstName: {type: String, required: true},
lastName: {type: String, required: true}
})
await Person.create([
{firstName: 'Pelle', lastName: 'Larsson'},
{firstName: 'Kalle', lastName: 'Jansson'},
{firstName: 'Lotta', lastName: 'Nilsson'}
])
const wantedFirstNames = ['Pelle', 'Lotta']
Найти нужных людей без использования $ in:
const wantedPersons = await Person.find({firstName: wantedFirstNames})
// Returns two matching documents
Найти нужных людей, используя $ in:
const wantedPersons = await Person.find({firstName: {$in: wantedFirstNames}})
// Also returns two matching documents
Может кто-нибудь сказать мне, можно ли пропустить $ in или эти два примера делают что-то другое? Это где-то задокументировано?
Обновление
Я разместил вопрос на странице mongoose github и получил отличный ответ:
https://github.com/Automattic/mongoose/issues/7789
Как говорит @ HRK44. Mongoose увидит, что wantedFirstNames - это массив, а firstName - строка, поэтому в любом случае используйте $.