首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >要从字符串传递到整数然后再传递sum的mongoDB查询

要从字符串传递到整数然后再传递sum的mongoDB查询
EN

Stack Overflow用户
提问于 2021-07-21 02:49:34
回答 2查看 34关注 0票数 0

我有以下字段:

代码语言:javascript
运行
复制
_id: {
    contents: [{
        duration: "4",
        startDate : "2020-10-14",
    }, {
        duration: "15",
        startDate : "2020-11-17",
    }], 

}

我需要找到将在未来10天内过期的内容。这是我必须遵循的逻辑:

代码语言:javascript
运行
复制
db.collection.find() 
    If duration > 10 =>  
        If ((duration - 10) + startDate) ==== today

但是我不能将持续时间或startDate转换为数字,甚至不能正确地处理条件

EN

回答 2

Stack Overflow用户

发布于 2021-07-21 04:14:39

为此,我在我的mongo local中创建了一个集合,其中包含一个字段,其中的数字如下图所示

现在要找出大于2....的持续时间之和。

现在,正如您在上面看到的,诀窍是将比较器也视为字符串。Lemme也可以使用mongoose附加节点代码段

代码语言:javascript
运行
复制
var mongoose = require('mongoose');
var mongoDB = 'mongodb://127.0.0.1/my_database';
mongoose.connect(mongoDB, {useNewUrlParser: true, useUnifiedTopology: true});
var db = mongoose.connection;
var Schema = mongoose.Schema;

var SomeModelSchema = new Schema({
    duration: String
});

var SomeModel = mongoose.model('SomeModel', SomeModelSchema );

SomeModel.aggregate([{ $match: {duration: { $gt : "2" }}},{ $group: { _id : null, sum: { $sum: {$toDouble: "$duration" }} } }], function(err, data){
    console.log(data)
});
  
db.on('error', console.error.bind(console, 'MongoDB connection error:'));
票数 0
EN

Stack Overflow用户

发布于 2021-07-21 04:39:14

字符串不能利用索引的数字操作。如果表太大,可能会导致查询速度非常慢。

问题1:为什么字段是以字符串形式插入(只是好奇)问题2:为什么不更新all以添加一个新字段‘exactly’,并精确到时刻(日期或Unix时间)。通过这种方式,数据库很容易找到这些记录。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68459978

复制
相关文章

相似问题

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