【问题标题】:Mongo find query via function in Node.js [duplicate]Mongo通过Node.js中的函数查找查询[重复]
【发布时间】:2017-08-05 04:28:11
【问题描述】:

我在 Mongo 中有以下形式的文档:

{
"videoname": "TheTitle",
"numviews": "150"
}

我想查找视图大于 1000 的所有文档。我不能使用 $gt,因为它不适用于字符串,我已经尝试使用 $where,但它会返回所有文档集合。

let cursor = collection.find({$where: function(){return  Number(this.numviews) > 1000;}});
    cursor.count(function (err, count) {
      console.log("Total matches: " + count);
    });

那我该怎么做呢?

【问题讨论】:

  • 为什么数值是字符串?
  • @KevinB 这是来自 Youtube API 的数据,恰好是一个字符串
  • 虽然很慢,但 $where 查询应该可以工作。但是你真的应该在将字符串存储到 mongodb 之前将它们转换为数字类型。
  • @JohnnyHK 对于上下文,这来自 OP 的另一个(现已删除)问题,关于 node.js 驱动程序的 $where 语法。我当时对他们的提示是发布一个新问题,展示他们如何使用$where,因为“你几乎从来不需要它”。所以确实“希望”在这里学到的教训是真正转换数据,而不是使用$where

标签: node.js mongodb


【解决方案1】:

理想情况下,转换数据!

但在短期内,我认为 mongo 支持正则表达式。那么where 子句怎么样:

{numViews: /[1-9][0-9]{3,}/}

【讨论】:

    猜你喜欢
    • 2018-10-01
    • 2019-03-08
    • 2014-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-17
    • 1970-01-01
    • 2020-08-10
    相关资源
    最近更新 更多