TaL*_*han 1 schema mongodb node.js
我想从存储在mongodb文档中的数组中删除特定元素.我用这个:
model.registerCompany.findOneAndUpdate({companyKey:"a key"},
{$pop:{onlineEmployees:"John"}},
function(err,doc){
if(!err)
console.log("Online list modified: ",doc);
else
console.log("Online list modified error :",err);
});
Run Code Online (Sandbox Code Playgroud)
但我不确定$ pop是否从数组中删除了特定元素"John"(onlineEmployees),或者只是从中弹出最后一个元素.
我做得对吗还是有其他方法可以做到.
我想我得到了答案.. $ pull用于此目的,如链接中所述:http:
//docs.mongodb.org/manual/reference/operator/pull/#_S_pull
在$弹出操作将删除阵列,这不一定是正确的的第一个或最后一个元素.
如果你想要一个特定的元素,你可以用定义的标准来拉取项目:
model.registerCompany.findOneAndUpdate({companyKey:"a key"},
{$pull:{onlineEmployees:"John"}},
Run Code Online (Sandbox Code Playgroud)
您必须确保数组中的值是唯一的,以$pull删除与名称"John"匹配的每个元素.
如果数组中存在相同的值,则需要使用$unset和$位置运算符将目标元素值设置为null(遗憾的是$ unset不会删除元素),然后使用$pull删除元素null值.要做到这一点,你必须确保有效值不能null.在这种情况下,代码可能是这样的:
model.registerCompany.findOneAndUpdate({companyKey:"a key", onlineEmployees:"John"},{ $unset: { "onlineEmployees.$" : '' } } )
model.registerCompany.findOneAndUpdate({companyKey:"a key"},{ $pull: { "onlineEmployees" : null } } )
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3174 次 |
| 最近记录: |