CNode

mongodb 中的ObjectId 怎么做判等啊

问答
Hhetianqi发布于11 年前最后回复11 年前12 回复9120 浏览0 收藏

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

查看回复

回复 (12)

D
dca#1·11 年前
if (movie._id.equals(movies[i])) {
  //...
}
D
dca#2·11 年前

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

A
alsotang#3·11 年前
引用 dca

@dca

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

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

L
leapon#4·11 年前

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

L
leapon#5·11 年前

可以用

_id + ''
N
njaulj#6·11 年前
//if movie like { { "_id" : ObjectId("5569b95677a7277b5618dd31"),"title":"侏罗纪公园"}
if(movie._id =="5569b95677a7277b5618dd31"){
	...do
}
2
20082496#7·11 年前

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

H
hetianqi#8·11 年前
引用 alsotang@dca 感觉你这个不正确吧。\ id 是字符串类型的,没有 .equals 方法。而 movie.id.equals 倒是存在的。 不知道楼主的 movies 里面装的是什么类型。但有一招肯...

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

H
hetianqi#11·11 年前
引用 alsotang@hetianqi 应该有的,这要翻文档了

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

H
hetianqi#12·11 年前
引用 dca

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

参与回复
登录后即可参与回复。登录