伙计们,我想知道如何在不写整个字符串的情况下获得值。
示例:我有这个名字Fulano Branco Cesar
;
当我写Fulano Cesar
或Branco Cesar
或Fulano Branco
时,我希望得到这个名称。
今天我有:{ NAME: { like: 'Fulano Cesar', options: 'i' }
和它返回什么给我..
我已经使用了regex
,all
和contains
功能。
Like:{ NAME: { regex: .*${NAME}.*, options: 'i' } }
.
有人能帮帮我吗?请。
given
> db.names.find()
{ "_id" : ObjectId("6027b60b4aff165418b35ff6"), "name" : "roger Cesar" }
{ "_id" : ObjectId("6027b60b4aff165418b35ff7"), "name" : "jules cesar" }
{ "_id" : ObjectId("6027b60b4aff165418b35ff8"), "name" : "nope" }
您可以在查找谓词
中给出正则表达式const mongoose = require('mongoose')
mongoose.connect('mongodb://localhost:27017/dummy')
const NameModel = mongoose.model('Name', { name:String }, 'names')
;(async()=>{
try {
mongoose.set('debug', true)
console.log('names : ', await NameModel.find({ name: /Cesar/i }))
/*
names : [
{ _id: 6027b60b4aff165418b35ff6, name: 'roger Cesar' },
{ _id: 6027b60b4aff165418b35ff7, name: 'jules cesar' }
]
*/
} finally {
mongoose.disconnect()
}
})()
如果你想指定任何正则表达式
const findName = name => {
return NameModel.find({ name: new RegExp(name, 'i') })
}
await findName('Cesar')