threshold"-6ren"> threshold"-我怎样才能有一个类似于 SQL“...WHERE _id > threshold”的 mongo 查询 我尝试了以下方法,但没有任何结果。 db.things.find(_id: {$gt: som-6ren">
gpt4 book ai didi

mongoDB查询 "WHERE _id > threshold"

转载 作者:IT老高 更新时间:2023-10-28 13:03:50 27 4
gpt4 key购买 nike

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

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

 db.things.find(_id: {$gt: someid} });

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

_id : {"$oid" : "someid"} 

最佳答案

比较喜欢和喜欢

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

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

var ObjectId = require('mongodb').ObjectID;
var oid = new ObjectId();
db.things.find(_id: {$gt: oid});

不要读取 mongoexport 文件

Mongo 导出文件如下所示:

{ "_id" : { "$oid" : "4f876b00c56da1fa6a000030" }, ...

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

# will not work
db.things.find("_id.$oid": {$gt: "string"});

id 作为字符串

如果你将 id 作为字符串,你会这样做:

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 进行查找。例如:

var ObjectId = require('mongodb').ObjectID;
var oid = new ObjectId(str + "0000");
db.things.find(_id: {$gt: oid});

关于mongoDB查询 "WHERE _id > threshold",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11052286/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com