回答(10)

2 years ago

我发现mongoose ObjectId验证器用于验证有效的objectIds,但我发现了一些无效ID被认为有效的情况 . (例如:任何12个字符长的字符串)

var ObjectId = require('mongoose').Types.ObjectId;

ObjectId.isValid('microsoft123'); //true

ObjectId.isValid('timtomtamted'); //true

ObjectId.isValid('551137c2f9e1fac808a5f572'); //true

为我工作的是将一个字符串转换为objectId,然后检查原始字符串是否与objectId的字符串值匹配 .

new ObjectId('timtamtomted'); //616273656e6365576f726b73

new ObjectId('537eed02ed345b2e039652d2') //537eed02ed345b2e039652d2

这项工作是因为有效ID在转换为ObjectId时不会更改,但获取false有效的字符串在转换为objectId时会更改 .

2 years ago

您可以使用正则表达式来测试:

CoffeeScript的

if id.match /^[0-9a-fA-F]{24}$/

# it's an ObjectID

else

# nope

JavaScript的

if (id.match(/^[0-9a-fA-F]{24}$/)) {

// it's an ObjectID

} else {

// nope

}

2 years ago

我过去曾使用本机节点mongodb驱动程序执行此操作 . isValid方法检查该值是否为有效的BSON ObjectId . See the documentation here.

var ObjectID = require('mongodb').ObjectID;

console.log( ObjectID.isValid(12345) );

2 years ago

这是我根据@ andy-macleod的答案编写的一些代码 .

它可以采用int或string或ObjectId,如果传递的值有效则返回有效的ObjectId,如果无效,则返回null:

var ObjectId= require('mongoose').Types.ObjectId;

function toObjectId(id) {

var stringId = id.toString().toLowerCase();

if (!ObjectId.isValid(stringId)) {

return null;

}

var result = new ObjectId(stringId);

if (result.toString() != stringId) {

return null;

}

return result;

}

2 years ago

如果你有十六进制字符串,你可以使用这个:

ObjectId.isValid(ObjectId.createFromHexString(hexId));

2 years ago

我花了一段时间才得到一个有效的解决方案,因为@Andy Macleod提出的将objectId值与其自己的字符串进行比较的方法正在崩溃Express.js服务器:

var view_task_id_temp=new mongodb.ObjectID("invalid_id_string"); //this crashed

我只是用一个简单的try catch来解决这个问题 .

var mongodb = require('mongodb');

var id_error=false;

try{

var x=new mongodb.ObjectID("57d9a8b310b45a383a74df93");

console.log("x="+JSON.stringify(x));

}catch(err){

console.log("error="+err);

id_error=true;

}

if(id_error==false){

// Do stuff here

}

2 years ago

对于mongoose,使用isValid()函数检查objectId是否有效

示例:

var ObjectId = mongoose.Types.ObjectId;

if(ObjectId.isValid(req.params.documentId)){

console.log('Object id is valid');

}else{

console.log('Invalid Object id');

}

2 years ago

我找到的唯一方法是使用我想要检查的值创建一个新的ObjectId,如果输入等于输出,则id是有效的:

function validate(id) {

var valid = false;

try

{

if(id == new mongoose.Types.ObjectId(""+id))

valid = true;

}

catch(e)

{

valid = false;

}

return valid;

}

> validate(null)

false

> validate(20)

false

> validate("abcdef")

false

> validate("5ad72b594c897c7c38b2bf71")

true

2 years ago

如果字符串包含12个字母,则mongoose.Types.ObjectId.isValid(string)始终返回True

let firstUserID = '5b360fdea392d731829ded18';

let secondUserID = 'aaaaaaaaaaaa';

console.log(mongoose.Types.ObjectId.isValid(firstUserID)); // true

console.log(mongoose.Types.ObjectId.isValid(secondUserID)); // true

let checkForValidMongoDbID = new RegExp("^[0-9a-fA-F]{24}$");

console.log(checkForValidMongoDbID.test(firstUserID)); // true

console.log(checkForValidMongoDbID.test(secondUserID)); // false

2 years ago

警告:对于以有效十六进制数字开头的任意12/24长度字符串, isValid 将返回 true . 目前我认为这是一个更好的检查:

((thing.length === 24 || thing.length === 12)&& isNaN(parseInt(thing,16))!== true)

mongodb objectid java_我可以确定字符串是否是MongoDB ObjectID吗?相关推荐

  1. mongodb for java_【MongoDB for Java】Java操作MongoDB

    上一篇文章: http://www.cnblogs.com/hoojo/archive/2011/06/01/2066426.html介绍到了在MongoDB的控制台完成MongoDB的数据操作,通过 ...

  2. mongodb连接java_如何从Java EE无状态应用程序连接到MongoDB

    mongodb连接java 在本文中,我将介绍如何从无状态Java EE应用程序连接到MongoDB,以利用与MongoDB Java驱动程序提供的数据库的内置连接池. 如果您开发的REST API对 ...

  3. mongodb不等于某个值_MongoDb进阶实践之四 MongoDB查询命令详述

    一.引言 上一篇文章我们已经介绍了MongoDB数据库的最基本操作,包括数据库的创建.使用和删除数据库,文档的操作也涉及到了文档的创建.删除.更新和查询,当然也包括集合的创建.重命名和删除.有了这些基 ...

  4. mac mongodb可视化工具_「时序数据库」和MongoDB:第3部分-查询、分析和呈现

    在<时间序列数据和MongoDB:第1部分-简介>中,我们回顾了理解数据库的查询访问模式需要询问的关键问题.在<时间序列数据和MongoDB:第2部分-模式设计最佳实践>中,我 ...

  5. mongodb java id 查询数据_java 用 _id 查找 MongoDB 下的数据

    找网上的资料看了下增删改查,等日后补上. 已经实现了数据的插入,现在想通过 _id属性来查找数据.一开始看到 类似 55b321df715cc162076eb466 这么一长串的内容觉得是string ...

  6. MongoDB学习第一篇 --- Mac下使用HomeBrew安装MongoDB

    2019独角兽企业重金招聘Python工程师标准>>> MongoDB学习第一篇 --- Mac下使用HomeBrew安装MongoDB 0.确保mac已经安装了HomeBrew ( ...

  7. mongodb 3.2配置内存缓存大小为MB/MongoDB 3.x内存限制配置

    mongodb 3.2配置内存缓存大小为MB/MongoDB 3.x内存限制配置 转载自勤奋的小青蛙 mongodb占用内存非常高,这是因为官方为了提升存储的效率,设计就这么设计的. 但是大部分的个人 ...

  8. MongoDB负载信息一目了然 阿里云HDM重磅发布MongoDB监控和诊断功

    混合云数据库管理(HDM)的统一监控.告警.诊断功能新增了对MongoDB的支持. 通过直观的方式将MongoDB多个维度的负载信息统一整合,不仅可以清晰的查看实时负载信息,也可以方便的确认历史负载情 ...

  9. Linux下MongoDB的安装,通过配置文件启动Mongodb的方式研究,mongodb自启动脚本(Linux),Windows下安装MongoDB服务,集群部署,数据导出和恢复

    关于MongoDB的windows的 安装,可以参考: http://www.runoob.com/mongodb/mongodb-window-install.html 关于Linux的安装可以参考 ...

最新文章

  1. 世界人口钟实时数据_用数字孪生重新定义智慧城市,美象VR推出MxDATA智慧城市CIM数据可视化平台...
  2. leetcode算法题-- 最长递增子序列的个数★
  3. 启动vm虚拟机里的系统时,提示此主机支持 AMD-V,但 AMD-V 处于禁用状态。
  4. css获取到指定元素的宽度,在回调返回宽度值
  5. 46 MM配置-采购-条件-定价过程-定义方案组
  6. Android 应用内更新 Support in-app updates [GP官方支持]
  7. java并发编程之缓存一致性问题
  8. VS2012下基于Glut OpenGL glEdgeFlag示例程序:
  9. python处理时间的标准函数库_使用Python的datetime库处理时间(RPA流程)
  10. 使用spring-boot-maven-plugin插件打包spring boot项目
  11. 西安电子科技大学计算机学院数据结构真题,数据结构1800题(标准答案全)
  12. 一个3D引擎Demo 源码
  13. IDEA 之搭建spring-boot maven报错Project ‘org.springframework.boot:spring-boot-starter-parent:2.2.0.RELEAS
  14. win10下卜卦占星工具
  15. 新浪微博、中关村、蘑菇街、微信、国美、苏宁等各大网站登录js解密例子!
  16. 鼠标回报率测试软件用哪个,揭开鼠标的秘密 艾尚教你如何测回报率
  17. 泰国80亿互联网记录数据库泄漏,疑遭黑客攻击
  18. ffmpeg安装教程(windows版)
  19. 《谁说菜鸟不会数据分析》学习笔记 第一章总览 第二章数据分析思路
  20. Python在基金定投上的验证

热门文章

  1. 为什么单独循环中的元素加法比组合循环中的要快得多?
  2. win11开始菜单如何分组 Windows11开始菜单进行分组的设置方法
  3. Android实战经验之图像处理及特效处理的集锦
  4. UDP方式的网络通信【示例】
  5. 案例-三角形(CSS3)
  6. 文字垂直居中(HTML、CSS)
  7. Vue使用wangEditor 封装成独立组件实现富文本编辑器
  8. c语言编写界面图形表示,「分享」C语言如何编写图形界面
  9. Confluence 6 针对合并完全失败的内容重新运行合并
  10. O(1) O(n)