能否执行类似以下的查询:
db.artigo.find( { _id : ObjectId('520a504a3004bc615fcfcf16') } )
但是在ObjectId上使用正则表达式?
例如,获取包含指定位置上的“004”的_ids。
附注:原因是基于某些字段(即_id)实现短链接服务。我正在尝试创建一个隐式的“短链接”服务,而不是显式的(使用为此目的生成的字段)。
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();
现在我们可以通过聚合操作,按照您的意愿,使用_id的最后6位数字或前6位数字来查找。
db.artigo.find( { _id : { $regex: '004' } } )
_id
是 objectId 而不是字符串,请查看此链接: https://dev59.com/iGEi5IYBdhLWcg3wwecN - Neo-coder