gpt4 book ai didi

java - MongoDB 数字范围搜索无法按预期工作

转载 作者:太空宇宙 更新时间:2023-11-04 08:28:52 25 4
gpt4 key购买 nike

我正在尝试对 MongoDB 中的某些数字进行范围搜索。

我有以下两条记录。导入字段是最后两个,valuetype。我希望能够取回具有值的记录:在一定范围内。

{ "_id" : ObjectId("4eace8570364cc13b7cfa59b"), "sub_id" : -1630181078, "sub_uri" : "http://datetest.com/datetest", "pro_id" : -1630181078, "pro_uri" : "http://datetest.com/datetest", "type" : "number", "value" : "8969.0" }
{ "_id" : ObjectId("4eacef7303642d3d1adcbdaf"), "sub_id" : -1630181078, "sub_uri" : "http://datetest.com/datetest", "pro_id" : -1630181078, "pro_uri" : "http://datetest.com/datetest", "type" : "number", "value" : "3423.0" }

当我执行此查询时

> db.triples.find({"value":{$gte: 908}});

所以我做了这个查询:

> db.triples.find({"value":{$gte: "908"}});

同样,两个预期记录都没有返回(尽管在这种情况下返回了一些包含日期的其他记录)。

我期望得到上面两条记录,但是两条记录都没有显示。

我可以看到数字周围有引号 - 这是否意味着它们被存储为“字符串”,因此数字搜索不起作用?我已非常明确地将它们保存为 Double,因此出现了“.0”。

或者是否还有其他原因导致 find(... query ...) 命令无法按预期工作?

编辑:

插入代码如下所示(删除了异常处理):

t.getObject().getValue() 返回一个字符串 - 这工作正常。然后我用它来实例化一个 Double,这是我希望保存到 MongoDB 的,并允许数字范围搜索。

triple.put("value",new Double(t.getObject().getValue()));
DBCollection triples;
triples = db.getCollection("triples");
triples.update(triple,triple,true,false);

最佳答案

你是对的——它们被保存为字符串,并且 $gte 可能会使用字典顺序。您使用哪个 mongoDB 驱动程序?您到底如何插入这些记录?

关于java - MongoDB 数字范围搜索无法按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7943623/

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