繁体   English   中英

查询mongoose数据库中的数据

[英]Querying through data in mongoose database

我目前正在尝试查询数据,以便它只返回两个特定日期2019-09-19和2019-09-22之间ID为bWYqm6-Oo的项目(我现在只有1个项目)。 在这种情况下,它应该只返回数据库中的前3项。 我提出了一个查询,但它只返回一个空数组。 有人知道如何解决这个问题吗? 先感谢您。

var findBy = {
    _id : bWYqm6-Oo,
    exercises : [
      {
        date: {
          $gte: 2019-09-19,
          $lt: 2019-09-22
        }
      }
    ]
  }
  UserModel.find(findBy).limit(5).exec((err, data) => {
      (err) ? res.json({"error" : "problem searching for exercises: " + err}) :  res.json(data);      
  });

我的数据库看起来像这样:

{
    _id: "bWYqm6-Oo",
    user: "rommy",
    exersises: [
        {
        user_id: "bWYqm6-Oo",
        date: "2019-09-20T00:00:00.000Z",
        description: "stiup",
        duration: "22",
        _id: "pu90D-dHx"
        },
        {
        user_id: "bWYqm6-Oo",
        date: "2019-09-21T00:00:00.000Z",
        description: "pushup",
        duration: "22",
        _id: "YtfsJLOXb"
        },
        {
        user_id: "bWYqm6-Oo",
        date: "2019-09-20T00:00:00.000Z",
        description: "stiup",
        duration: "22",
        _id: "pu90D-dHx"
        },
        {
        user_id: "bWYqm6-Oo",
        date: "2019-09-24T00:00:00.000Z",
        description: "stiup",
        duration: "22",
        _id: "pu90D-dHx"
        }
    ],
    __v: 9
}

这是我在server.js文件中调用我的文件的地方:

一些东西:

文档中的字段_id在mongo中始终是唯一的,因此在您的查询中

var findBy = {
    _id : bWYqm6-Oo,
    exercises : [
      {
        date: {
          $gte: 2019-09-22,
          $lt: 2019-09-22
        }
      }
    ]
  }

这部分是多余的

exercises : [
      {
        date: {
          $gte: 2019-09-22,
          $lt: 2019-09-22
        }
      }
    ]

因为只有一个文件的_id'bWYqm6-Oo'

如果您想使用日期范围进行查询,可以执行以下操作:

var query = {
  'exercises.date': {$gte: '2019-09-22', $lt: '2019-09-22'}
}

希望有所帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM