首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mongoDB查询"WHERE _id > threshold“

mongoDB查询"WHERE _id > threshold“
EN

Stack Overflow用户
提问于 2012-06-15 22:09:26
回答 1查看 24.4K关注 0票数 28

怎样才能有一个类似于SQL "...WHERE _id > threshold“的mongo查询呢?

我尝试了以下方法,但没有给出任何结果。

代码语言:javascript
复制
 db.things.find(_id: {$gt: someid} });

是不是因为_id字段有点特殊,因为它的格式是?

代码语言:javascript
复制
_id : {"$oid" : "someid"} 
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-06-15 22:15:01

比较like与like

mongo中的_id键(默认情况下)不是一个字符串--它是一个mongo objectId。

您需要比较相同的类型才能得到有意义的结果:

代码语言:javascript
复制
var ObjectId = require('mongodb').ObjectID;
var oid = new ObjectId();
db.things.find(_id: {$gt: oid});

不读取mongoexport文件

Mongo导出文件如下所示:

代码语言:javascript
复制
{ "_id" : { "$oid" : "4f876b00c56da1fa6a000030" }, ...

这是一个对象id的json表示。Mongo不希望你在实际查询数据库时使用这种语法。这将不起作用:

代码语言:javascript
复制
# will not work
db.things.find("_id.$oid": {$gt: "string"});

字符串形式的id

如果你有一个字符串形式的id,你会这样做:

代码语言:javascript
复制
var ObjectId = require('mongodb').ObjectID;
var str = "123456789012345678901234";
var oid = new ObjectId(str);
db.things.find(_id: {$gt: oid});

部分字符串形式的id

如果你的字符串不是一个有效的oid (不是24个字符长度),你只会从mongo得到一个异常-或者根据你的驱动程序,一个新的oid。如果你有一个部分的对象id,你可以用0来填充一个有效的oid,从而允许通过部分对象id来查找。例如:

代码语言:javascript
复制
var ObjectId = require('mongodb').ObjectID;
var oid = new ObjectId(str + "0000");
db.things.find(_id: {$gt: oid});
票数 39
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11052286

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档