Node.js MongoDB:删除Mongoose中的数组对象
我有以下模式:Node.js MongoDB:删除Mongoose中的数组对象,node.js,mongodb,mongoose,Node.js,Mongodb,Mongoose,我有以下模式: var userSchema = mongoose.Schema({ local : { email : String, password : String, movies : [{ moviename : String, rating : Numbe
var userSchema = mongoose.Schema({
local : {
email : String,
password : String,
movies : [{
moviename : String,
rating : Number
}],
}
});
我使用以下方法向数组中添加条目:
user.local.movies.push({ moviename : "Top Gun", rating : 80});
user.save(function (err) {
if (err)
console.log("Error in saving");
res.end(0);
});
但我也需要删除条目。我需要能够删除“moviename”名称的条目。
我试着使用拉:
user.local.movies.pull({ moviename : "Top Gun"});
但它没有起作用
有人能告诉我如何从数组中删除条目吗
谢谢。一种方法是使用函数从数组中删除元素,前提是您可以找到索引。例如:
User.findOne(function(err, user) {
var movies, index;
movies = user.movies;
for (index = 0; index < movies.length; index++) {
if (movies[index].moviename === "Top Gun") {
break;
}
}
if (index !== movies.length) {
movies.splice(index, 1);
}
user.save(function(err, user) {
res.send(user);
});
});
User.findOne(函数(err,User){
var、指数;
movies=user.movies;
用于(索引=0;索引
(要知道,上面的代码只对一个用户执行此操作,并对要删除的电影名称进行硬编码,但您知道这一点。)一种方法是使用函数从数组中删除元素,前提是您可以找到索引。例如:
User.findOne(function(err, user) {
var movies, index;
movies = user.movies;
for (index = 0; index < movies.length; index++) {
if (movies[index].moviename === "Top Gun") {
break;
}
}
if (index !== movies.length) {
movies.splice(index, 1);
}
user.save(function(err, user) {
res.send(user);
});
});
User.findOne(函数(err,User){
var、指数;
movies=user.movies;
用于(索引=0;索引
(要知道,上面的代码只对一个用户执行此操作,并对要删除的电影名称进行硬编码,但您知道这一点。)一种方法是使用函数从数组中删除元素,前提是您可以找到索引。例如:
User.findOne(function(err, user) {
var movies, index;
movies = user.movies;
for (index = 0; index < movies.length; index++) {
if (movies[index].moviename === "Top Gun") {
break;
}
}
if (index !== movies.length) {
movies.splice(index, 1);
}
user.save(function(err, user) {
res.send(user);
});
});
User.findOne(函数(err,User){
var、指数;
movies=user.movies;
用于(索引=0;索引
(要知道,上面的代码只对一个用户执行此操作,并对要删除的电影名称进行硬编码,但您知道这一点。)一种方法是使用函数从数组中删除元素,前提是您可以找到索引。例如:
User.findOne(function(err, user) {
var movies, index;
movies = user.movies;
for (index = 0; index < movies.length; index++) {
if (movies[index].moviename === "Top Gun") {
break;
}
}
if (index !== movies.length) {
movies.splice(index, 1);
}
user.save(function(err, user) {
res.send(user);
});
});
User.findOne(函数(err,User){
var、指数;
movies=user.movies;
用于(索引=0;索引
(要知道,上面的代码只对一个用户执行此操作,并且硬编码要删除的电影名称,但是您知道了。)我认为使用显式的
更新
调用比使用Mongoose的数组操作方法更容易,因为它并不总是像您预期的那样工作:
User.update({_id: user._id},
{$pull: {'local.movies': {moviename: 'Top Gun'}}}, callback);
我认为使用显式的
update
调用比使用Mongoose的数组操作方法更容易,因为Mongoose的数组操作方法并不总是像您预期的那样有效:
User.update({_id: user._id},
{$pull: {'local.movies': {moviename: 'Top Gun'}}}, callback);
我认为使用显式的
update
调用比使用Mongoose的数组操作方法更容易,因为Mongoose的数组操作方法并不总是像您预期的那样有效:
User.update({_id: user._id},
{$pull: {'local.movies': {moviename: 'Top Gun'}}}, callback);
我认为使用显式的
update
调用比使用Mongoose的数组操作方法更容易,因为Mongoose的数组操作方法并不总是像您预期的那样有效:
User.update({_id: user._id},
{$pull: {'local.movies': {moviename: 'Top Gun'}}}, callback);
在
pull()
之后是否调用save()
?是的。和我在Push中做的一样。在pull()
之后是否调用save()
?是的。和我在Push中做的一样。在pull()
之后是否调用save()
?是的。和我在Push中做的一样。在pull()
之后是否调用save()
?是的。和我推的一样。