是否可以进行如下查询:
db.artigo.find( { _id : ObjectId('520a504a3004bc615fcfcf16') } )
Run Code Online (Sandbox Code Playgroud)
但在ObjectId上使用正则表达式?
例如,在上面的位置上获取包含"004"的_ids.
PS.原因是基于某些字段实现了一个简短的服务,即_id.我正在尝试创建一个隐式的"shorty"服务而不是一个明确的服务(为此目的生成一个字段).
ObjectId不是字符串,而是MongoDB中的特殊类型。您无法使用正则表达式运算符对包含 ObjectId 的字段进行查询。
_id不一定是ObjectId,所以我建议提供您自己的唯一字符串作为_id,然后您可以使用正则 表达式进行查询。
例子:
let userId = 'bf44fa';
const result = await Users.aggregate([
{
$addFields: {
tempUserId: { $toString: '$_id' },
}
},
{
$match: {
tempUserId: { $regex: userId, $options: "i" }
}
}
]).exec();
Run Code Online (Sandbox Code Playgroud)
现在我们可以根据_id的最后6位数字或开始6位数字根据您的意愿使用聚合来查找。