我需要一些关于Mongo DB请求的帮助。
这是我的文档结构:
{
"username" : "firstUser",
"email" : "first@email.com",
"subscriptions" : [
{
"subscriptionId" : ObjectId("59f972dfdaca9e39487e3bb4"),
"someOtherFields" : "otherValue",
"message" : {
"contact" : [
"first@email.com",
"second@email.com",
"third@email.com"
],
"subject" : "Mailsubject",
"content" : "Mailcontent"
}
},
{
"subscriptionId" : ObjectId("59faf26c8a593b25b8a9a8f7"),
"someOtherFields" : "otherValue",
"message" : {
"contact" : [
"first@email.com",
"second@email.com",
"third@email.com"
],
"subject" : "Mailsubject",
"content" : "Mailcontent"
}
}
}
现在我需要从subscriptions.message.contact
数组中移除一个电子邮件地址,其中subscriptions.subscriptionid
= ObjectId("59f972dfdaca9e39487e3bb4")
。
我试过这样的事情:
db.getCollection('myCollection').update({
"subscriptions.subscriptionId" : ObjectId("59f972dfdaca9e39487e3bb4")
},
{
"$pull" : { "subscriptions": {"message.contact" : "first@email.com" }}
})
但它删除了所有subscriptions
这个电子邮件地址
有谁知道,如何解决这个问题?
答案 0 :(得分:2)
你可以使用它。
我使用$
运算符来识别subscriptions
数组中的元素。
db.getCollection('myCollection').update({
"subscriptions.subscriptionId" : ObjectId("59f972dfdaca9e39487e3bb4")
},
{
"$pull" : {"subscriptions.$.message.contact" :"first@email.com"}
}
)