如何更新mongodb中的特定字段

此代码没有错误,但更新不起作用。更新语法工作在MongoDB中。我通常希望基于某些条件更新特定字段。

User.update( { ULId: "IC666" }, {$set: {FHName: "Arijit Banerjee",Ward:"II"}} ).done(function(err) { if(err) res.end(err); res.end('success'); }); 

你正在尝试在Waterline上使用Mongo语法,但是ORM有它自己的语法。 请参阅Update方法的文档 。 它有两个参数:“where”条件的对象,以及在find的实例中更改键/值的对象。 所以你想要的是:

 User.update( // Find all users with ULId = IC666 { ULId: "IC666" }, // Update their FHName and Ward fields {FHName: "Arijit Banerjee",Ward:"II"} ).exec(function(err, users) { // In case of error, handle accordingly if(err) {return res.serverError(err);} // Otherwise send a success message and a 200 status return res.send('success'); }); 

Sails.js使用水线作为他们的ORM(对象 – 关系映射器)。 因此,ORM在数据库之上提供了一个抽象层,而不是使用原始SQL语句(根据您select的底层数据库不同而不同),您可以使用相同的源代码轻松查询,创build或更新logging。 它将被不同的适配器映射到底层的数据库语句。

所以你没有两个写MongoDB特定查询,你应该使用Waterline语法。 请参阅Waterline文档中的更新方法。 https://github.com/balderdashy/waterline-docs/blob/master/query-methods.md

 .update( search criteria , values , [callback] ) 

更新将尝试更新匹配传入条件的任何logging。可以使用查询语言构build条件。

例:

 User.update({ name: 'Walter Jr' }, { name: 'Flynn' }) .exec(function(err, users) {}); 

下面是一篇文章,让您更好地理解什么是ORM,以及Sails.js模型validation方法是如何工作的,这对您可能是有用的。 http://www.shanison.com/2014/07/11/sails-js-model-validation/