mongodb 中的ObjectId 怎么做判等啊
发布于 9 年前 作者 hetianqi 8080 次浏览 最后一次编辑是 8 年前 来自 问答

if (movies[i] == movie._id) { //… } movies里面装的是movie的id,然后我想做个比较,如果匹配的话可以执行某些操作,但是一直进不到if语句里面去,怀疑是object类型比较为false,求解怎么办

12 回复
if (movie._id.equals(movies[i])) {
  //...
}

@dca

感觉你这个不正确吧。_id 是字符串类型的,没有 .equals 方法。而 movie.id.equals 倒是存在的。

不知道楼主的 movies 里面装的是什么类型。但有一招肯定行,就是 String(movies[i]) === String(movie._id)

那个 _id 是 object,转化成字符串比较就好了。

可以用

_id + ''
//if movie like { { "_id" : ObjectId("5569b95677a7277b5618dd31"),"title":"侏罗纪公园"}
if(movie._id =="5569b95677a7277b5618dd31"){
	...do
}

movies[i].toString() == movie._id.toString()也行吧

@alsotang 脑昏了没看清, .equals 是mongoose 才提供的方法,没仔细看问的是mongodb

@alsotang 就是转成字符串比较是吧?我想过,我还以为mongodb提供了标准的id比较的方法呢,看来是没有了

@dca 我是用的mongoose驱动的mongodb

@hetianqi 应该有的,这要翻文档了

@alsotang 好吧。那就暂时先用toString来比较了

@dca equals能用的,那么说这是ObjectId提供的方法还是mongoose提供的呢?

回到顶部