Arrays 从mongoose中的数组中删除元素
我正在开发nodejs/express 我想删除mongoose中数组中的元素 我有这种格式的文件Arrays 从mongoose中的数组中删除元素,arrays,json,node.js,mongodb,mongoose,Arrays,Json,Node.js,Mongodb,Mongoose,我正在开发nodejs/express 我想删除mongoose中数组中的元素 我有这种格式的文件 { "_id" : ObjectId("5a2e19223e50551504b316c0"), "username" : "nikhil", "email" : "nikhil@itradicals.com", "password" : "$2a$10$f3NvrTywIezlzKcZLWSU0O98gn6Mc.Q8B0ZNEDG2F66f4rwyo65Yu
{
"_id" : ObjectId("5a2e19223e50551504b316c0"),
"username" : "nikhil",
"email" : "nikhil@itradicals.com",
"password" : "$2a$10$f3NvrTywIezlzKcZLWSU0O98gn6Mc.Q8B0ZNEDG2F66f4rwyo65Yu",
"companyname" : "itr",
"role" : "vendor",
"verify" : "true",
"createddate" : ISODate("2017-12-10T18:30:00.000+0000"),
"account" : [
{
"Region" : [
"North America",
"Africa",
"Asia"
]
},
{
"Category" : [
"Group 1",
"Group 2",
"Group 3"
]
}
]
}
我想使用我得到的mongoose查询只删除区域字段
动态数据,以便用户可以删除任何数组,无论是区域数组还是
类别我正在获取要在参数中删除的数组名
“场”
我对野猫和猫鼬不熟悉
提前感谢您可以使用以下功能 使用计算属性名称动态地将字段传递给unset和查询表达式 查询以验证数组是否存在,后跟
$unset
以删除数组
$positional运算符,根据查询条件动态定位数组。如果知道数组位置,可以对数组索引进行硬编码
module.exports.setupAccount = function(id, field, callback){
var query = { "_id": id, ['account.' + field]:{"$exists":true}};
var unset = {"$unset":{['account.$.' + field]:""}};
User.findOneAndUpdate(query, unset, callback);
}
如果删除字段后不想保留空文档,只需从数组中删除整个元素即可:
module.exports.setupAccount = function(id,field,callback){
var query = { _id: id };
User.findOneAndUpdate(query, { $pull: { "account": { field: { $exists: true } } } }, callback);
}
谢谢你的帮助,但它留下了空的documnet。我不需要空的文档。我使用的这个和那个帮助我解决问题的字段是动态的,所以我需要在括号中使用它。使用[field]为我做。
module.exports.setupAccount = function(id,field,callback){
var query = { _id: id };
User.findOneAndUpdate(query, { $pull: { "account": { field: { $exists: true } } } }, callback);
}