【发布时间】:2015-04-23 16:28:21
【问题描述】:
这里是集合'conversations'的文档结构
{
"_id" : ObjectId("553778c0d3adab10206060db"), //conversation id
"messages" : [
{
"from" : ObjectId("5530af38576214dd3553331c"),
"_id" : ObjectId("553778c0d3adab10206060dc"),//message id
"created" : ISODate("2015-04-22T10:32:32.056Z"),
"read" : false,
"message" : "second object first msg",
"participants" : [
ObjectId("5530af38576214dd3553331c"), //participant id
ObjectId("553777f2d3adab10206060d8")//participant id
]
},
{
"from" : ObjectId("5530af38576214dd3553339b"),
"_id" : ObjectId("553778c0d3adab10206060dc"),//message id
"created" : ISODate("2015-04-22T10:32:32.059Z"),
"read" : false,
"message" : "second object second msg",
"participants" : [
ObjectId("5530af38576214dd3553331c"),//participant id
ObjectId("553777f2d3adab10206060d8")//participant id
]
}
],
"participants" : [
ObjectId("5530af38576214dd3553331c"),
ObjectId("553777f2d3adab10206060d8")
],
"__v" : 0
}
每个文档都包含“消息”数组,该数组又包含消息对象作为数组元素。每个对象都有参与者数组。
我有对话 id 、消息 id 、参与者 id。
我想从 'participants' 数组(存在于 'messages' 数组的消息对象中的 'participants' 数组)中删除一个特定元素。 我试过这段代码。
var query = { _id: mongoose.Types.ObjectId(req.conversation.id), 'messages._id':req.params.messageId};
Conversation.findOneAndUpdate(query, {$pull: {'participants' : participant_id}}, function(err, data){})
但它正在从外部“参与者”数组中删除对象元素。 请帮我完成这项工作。
谢谢
【问题讨论】:
-
在您的文档中,
message中的两个元素都包含相同的_id和participants对象。是相同的元素还是两个元素都包含不同的元素? -
对不起@yogesh 我没有收到你的问题
-
好的,您的
message元素是否在两个元素中包含相同的_id和相同的participants对象? -
没有@yogesh。不一样
标签: mongoose