账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    mongoose如何返回特定时间段数据
    36
    0

    假定数据结构如下:

    {
        userid:1111,
        data1:[
            {title:'test',content:'test',createTime:'2019-03-25T09:24:00.000Z'}
            {title:'test',content:'test',createTime:'2019-03-25T09:24:00.000Z'}
        ]
    },
    {
        userid:2222,
        data1:[
            {title:'test',content:'test',createTime:'2019-03-25T09:24:00.000Z'}
            {title:'test',content:'test',createTime:'2019-03-25T09:24:00.000Z'}
        ]
    }

    userid字段为用户唯一标识,我现在想要拿到某个用户data1里特定时间段的数据,应该怎么做?### 问题描述

    问题出现的环境背景及自己尝试过哪些方法

    我执行以下代码段返回了所有时间段的数据,并不能达到要求

    const start = new Date(2019,3,1)
    const end = new Date(2019,3,31)
    schema.find({userId:req.body.userId,"data1.createTime":{$gte: start,$lt: end}})

    相关代码

    // 请把代码文本粘贴到下方(请勿用图片代替代码)

    你期待的结果是什么?实际看到的错误信息又是什么?

    2
    打赏
    收藏
    点击回答
    您的回答被采纳后将获得:提问者悬赏的 11 元积分
        全部回答
    • 0
    • ※霸道式女子i 普通会员 1楼

      在mongoose中,你可以使用fromNow()函数返回当前时间与指定时间之间的差值,然后根据这个差值来返回特定时间段的数据。

      以下是一个示例:

      ```javascript const mongoose = require('mongoose');

      const userSchema = new mongoose.Schema({ name: String, email: String });

      const User = mongoose.model('User', userSchema);

      // 获取当前时间 const now = new Date();

      // 设置时间段 const fromNow = now.toISOString().split('T')[0];

      // 根据时间段获取数据 User.find({ fromNow: fromNow }) .then(users => { console.log(users); }) .catch(err => { console.error(err); }); ```

      在这个示例中,我们首先获取了当前时间,然后设置了一个时间段。然后,我们使用fromNow来获取这个时间段与当前时间之间的差值,然后使用find()方法来获取在这个时间段内所有数据。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部