我有一个这样的数据集:
{
"_id" : ObjectId("5bacc98431481e0520856df8"),
"action" : {
"count" : 0,
"shop" : [
{
"uid" : ObjectId("5c0b396a50b8a627c4172a2b"),
},
{
"uid" : ObjectId("5c0b3b471ed11f2124e1e3a8"),
},
{
"uid" : ObjectId("5c0b3b471ed11f2124e1e3a9"),
}
]
}
}
如何通过mongodb Query删除uid
为ObjectId("5c0b3b471ed11f2124e1e3a8")
的上述对象?
我使用的方法对我来说并不完美。我的方法是这样的:
db.CollectionName.find({_id: ObjectId("5bacc98431481e0520856df8")})
.then(data => {
if (data.length > 0) {
let xData = data[0].notifications.shop;
let xuid = ObjectId("5c0b3b471ed11f2124e1e3a8");
let filterData = xData.filter(
x => x.uid!= xuid
);
User.update(
{ _id: ObjectId("5bacc98431481e0520856df8")},
{
$set: {
action: { shop: filterData }
}
}
)
.then(usr => {
console.log("deleted successfully")
})
.catch(er => {
console.log(er)
})
}
})
.catch(error => {
console.log(error)
})
通过这种方法,我将uid
从本身在对象下的数组中删除。如果有人知道通过MongoDB查询完成的这类任务,请告诉我。
我们非常感谢您的帮助/建议。预先感谢尝试我的查询的开发人员。
答案 0 :(得分:1)
执行此操作的mongo语句为:
db.getCollection('YOURCOLECTION').update(
{'_id': ObjectId("5bacc98431481e0520856df8")},
{ "$pull":
{ "action.shop": { "uid": ObjectId("5c0b3b471ed11f2124e1e3a8") }}
})
您将结合使用$pull
命令和$update
。