如何获取包含特定字符串的值- mongodb



伙计们,我想知道如何在不写整个字符串的情况下获得值。

示例:我有这个名字Fulano Branco Cesar;

当我写Fulano CesarBranco CesarFulano Branco时,我希望得到这个名称。

今天我有:{ NAME: { like: 'Fulano Cesar', options: 'i' }和它返回什么给我..

我已经使用了regex,allcontains功能。

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')

最新更新