Mongoose - 是不是可以修改键的值以匹配 find() 查询的 where 条件?

Posted

技术标签:

【中文标题】Mongoose - 是不是可以修改键的值以匹配 find() 查询的 where 条件?【英文标题】:Mongoose - Is it possible to modify key's value to match with where condition for find() query?Mongoose - 是否可以修改键的值以匹配 find() 查询的 where 条件? 【发布时间】:2017-08-31 22:00:56 【问题描述】:

突然间我不得不使用 MongoDB 数据库创建一个项目时,我对 Oracle 非常熟悉。我正在使用猫鼬连接到我的 MongoDB。我的问题是,在进行查询之前是否可以匹配查找条件? 例如,我在我的 MongoDB 中得到了这个name : John,然后我只需要通过 Oracle SQL 来执行此操作。

SELECT * FROM MY_SCHEMA.WORKERS WORKER
WHERE UPPER(WORKER.NAME) = 'JOHN'

在 mongoDB 中,我所知道和能做的就是这个。

var mongoose = require('mongoose');
mongoose.connect('localhost:27017/myDB');
workers.find(
  
    "name": "JOHN"
  
);

我一直在寻找解决方案,但找不到。有没有办法将name 的值设置为大写以匹配我需要的结果?

任何帮助将不胜感激:)

编辑: 我通过对 mongoose 使用 RegExp() 找到了解决此问题的方法。 RegExp 将使我的 mongoDB 文档不区分大小写以匹配我的查询参数。此答案中的更多详细信息。 https://***.com/a/9824712/7498283

【问题讨论】:

【参考方案1】:

你可以使用toUpperCase()javascript,如果你想用大写字母进行查找。 refer-doc.

试试下面的代码:

workers.find(

  "name": ("JOHN").toUpperCase()
);

希望这会有所帮助。

【讨论】:

我需要大写的是我文档中的value,而不是从我的客户端发送的参数。但是,谢谢你的回复。 :D 您能否向我们展示您的数据库以及您希望通过查找查询获得什么? pastebin.com/kfJp6pgQ 例如,我需要使用JOHN 作为过滤器来获取John。谢谢你:D 请看question的答案 你也可以试试docs.mongodb.com/manual/reference/operator/query/text/…【参考方案2】:

您可以在 mongodb 中使用 $toUpper 运算符。

    worker.aggregate([
           $project: "name":$toUpper:"$name",
           $find:"name":"JOHN"
    ]);

【讨论】:

对不起,我正在使用猫鼬做数据库 CRUD。我编辑了我的帖子只是为了指出这一点。有没有使用mongoose在mongoDB中操作的解决方案?

以上是关于Mongoose - 是不是可以修改键的值以匹配 find() 查询的 where 条件?的主要内容,如果未能解决你的问题,请参考以下文章

通过 mongoose 模式将数据存储在 mongodb 中,不传递唯一真键的值

Angular Checkbox - 无法获取数据库的值以匹配 html 复选框中的复选标记

SQL 更新一个表中的值以匹配 Oracle SQL Developer 中另一个表的值

如何匹配主键和外键的值?

如何获取注释参数的值以在 AspectJ 中使用?

当同一转发器字段的值以其他语言更新时,ACF 转发器字段中的值是不是为空?