【问题标题】:How to search and replace in mongoose?如何在猫鼬中搜索和替换?
【发布时间】:2014-02-03 23:11:00
【问题描述】:

我的目标:我想更新某个路径中集合中的多个文档,条件是路径与正则表达式匹配,然后搜索并替换为路径中的某个值,最后将所有这些文档永久保存在数据库中。

示例:

myCollection : [
{ doc1 : { summary : 'Summary 1 : one', value : 1 },
{ doc2 : { summary : 'Summaryyuist 2 : two', value : 1 },
{ doc3 : { summary : 'hello 3 : three', value : 3 },
];

现在我想将路径中的所有“摘要”替换为“你好”:“摘要”

所以查询后的结果应该是:

myCollection : [
{ doc1 : { summary : 'hello 1 : one', value : 1 },
{ doc2 : { summary : 'helloyuist 2 : two', value : 1 },
{ doc3 : { summary : 'hello 3 : three', value : 3 },
];

我只是在寻找上面要使用的查询。

从这里 http://mongoosejs.com/docs/api.html#query_Query-regex

我没有找到如何实施的信息。特别是 'Number' 参数在正则表达式方法中的作用。?

也来自这里:

http://mongoosejs.com/docs/api.html#query_Query-regex 我也没有找到 monsoose 正则表达式的“显示代码”链接。有人至少可以回复猫鼬正则表达式代码的链接。

我只找到如何查找模型,而不是如何使用与文档特定路径中的正则表达式匹配的值进行替换更新。

如何实现我的目标?

【问题讨论】:

  • regex 示例:MyModel.where('summary').reqex(/Sum/).exec(console.log) OR MyModel.regex('summary', /Sum/).exec(console.log) 第二个参数是正则表达式(不是数字)
  • 它写在上面的链接上,第二个参数是数字类型
  • 我将在 exec 回调中得到什么参数??
  • 回调 = 函数(错误,结果){...}
  • 你想说“结果”将是一个数组,我必须循环“结果”。这不是很昂贵,因为它需要执行许多查询。?

标签: regex node.js mongoose


【解决方案1】:

我希望你可以使用猫鼬 Model.Update 选项。

Model.update = function (query, doc, options, callback) { ... }

例子:

MyModel.update({ age: { $gt: 18 } }, { oldEnough: true }, fn);
MyModel.update({ name: 'Tobi' }, { ferret: true }, { multi: true }, function(err,numberAffected,   raw) {
 if (err) return handleError(err);
 console.log('The number of updated documents was %d', numberAffected);
 console.log('The raw response from Mongo was ', raw);
 });

http://mongoosejs.com/docs/api.html#model_Model.update

【讨论】:

  • 我如何找到要替换的内容??? { ferret: true } 正在替换 doc path 'ferret' 的整个值。我只想替换路径 'ferret' 中的 PARTIAL 值,[考虑值应该是字符串。]
  • 您可以阅读这样的示例-> 更新 oldenough :对于所有年龄元素大于 18 的文档为 true。您有条件和更新字段。如果要更新内部元素,请使用driving.oldenough : true 或drinking.oldenough :false。
  • 请完成我的编辑。我不想替换路径“摘要”中的整个值。我只想从路径“摘要”的整个值中替换“摘要”
  • 不幸的是,MongoDB 目前不允许您在执行 update() 时引用任何字段的现有值。有一个现有的 Jira 票可以添加此功能。
猜你喜欢
  • 1970-01-01
  • 2021-09-25
  • 2017-01-05
  • 2015-02-23
  • 2020-05-30
  • 2016-09-15
  • 2017-01-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多