我想使用名字的数组在集合中查找文档。如果我在普通的MongoDB中执行此操作,则文档说我应该使用$ in。但是当我使用猫鼬时,似乎不需要$ in。
String query = "SELECT " + pUUID + " FROM playerInfo;";
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']
const wantedPersons = await Person.find({firstName: wantedFirstNames})
// Returns two matching documents
有人可以告诉我跳过$ in是否可以,或者这两个示例是否有不同之处。在某处有记录吗?
我在猫鼬的github页面上发布了一个问题,并收到了一个很好的答案: https://github.com/Automattic/mongoose/issues/7789 正如@ HRK44也说的那样。猫鼬会看到wantedFirstNames是一个数组,而firstName是一个字符串,因此仍要使用$。
答案 0 :(得分:1)
两种解决方案是相似的。
可以在以下位置找到可能会帮助您的文档:https://mongoosejs.com/docs/api.html#model_Model.find
我认为这是相关的:
在执行以下操作之前,将条件强制转换为其各自的SchemaType。 命令已发送。
完成此操作的部分代码可以在此处找到: https://github.com/Automattic/mongoose/blob/master/lib/cast.js#L296
第305行:
obj[path] = { $in: casted };
但是我同意在这个问题上文档不是很清楚...