我不想向客户端公开完整的对象ID,而是只向他显示集合中实体的实际对象ID的最后4个字符的一小部分。
例如:ObjectId("5fcca5d997239a74da0d67a9")将只成为67a9
ObjectId("5fcca5d997239a74da0d67a9")
67a9
因此,使用文档的ids而不是整个对象进行“对话”要容易得多。
然后,我需要仅使用67a9在数据库中查找文档。
这是可能的吗?如何实现?
发布于 2020-12-06 21:30:00
根据Jira中的this问题,解决方案是“不会修复”。
ObjectId不是字符串,而是另一个对象,所以$regex是不可能的。
ObjectId
$regex
查看this示例,当_id是字符串而不是ObjectId时,$regex可以正常工作。
_id
因此,一种可能的选择是将每个字段的_id复制到另一个名为id的字段中,或者任何id为字符串格式的字段中。
id
然后,您可以执行以下查询:
db.collection.find({ "_id": { "$regex": "67a9$" } })
我添加了更多与模式不匹配的_id字段的示例here
https://stackoverflow.com/questions/65167910
相似问题