我的文档结构:
"_id" : ObjectId("55e07b14bd1f3334f4d439ca"),
"created" : ISODate("2015-08-28T15:15:32.251Z"),
"userId" : 4790,
"p2l" : [
{
"listId" : 31608,
"status" : 25,
"subscriptionDate" : ISODate("2015-09-16T12:33:03.893Z")
},
...
]
我需要查找p2l.listId==value
所有文档,然后在p2l
数组中添加一个包含相同p2l.status
但新listId
和subscriptionDate
的新文档}值。
The example for finding this element:
db.Profiles.find({
"userId" : 4790,
"p2l" : { "$elemMatch" : { "listId" : { "$in" : [31617, 31614] } } }
})
如何进行更新呢?我认为它应该在一个查询中。 我使用C#Mongo Driver 2.0。 例如: 我有
"_id" : ObjectId("55e07b14bd1f3334f4d439ca"),
"created" : ISODate("2015-08-28T15:15:32.251Z"),
"userId" : 4790,
"p2l" : [
{
"listId" : 31608,
"status" : 25,
"subscriptionDate" : ISODate("2015-09-16T12:33:03.893Z")
},
...
]
我需要
"_id" : ObjectId("55e07b14bd1f3334f4d439ca"),
"created" : ISODate("2015-08-28T15:15:32.251Z"),
"userId" : 4790,
"p2l" : [
{
"listId" : 31608,
"status" : 25,
"subscriptionDate" : ISODate("2015-09-16T12:33:03.893Z")
},
{
"listId" : 31615,
"status" : 25,
"subscriptionDate" : ISODate("2015-09-17T14:35:13.855Z")
},
...
]
我找到文件,其中userId = 4790和p2l.listId = 31608,然后使用new listId = 31615和subscriptionDate =' ISODate(" 2015-09-17T14)添加到此p2l新项目:35:13.855Z")',但旧的p2l.status = 25
答案 0 :(得分:0)
使用$push
运算符
db.Profiles.update({
"userId" : 4790,
"p2l" : { "$elemMatch" : { "listId" : { "$in" : [31617, 31614] } } }
},{'$push:{'p21':{..your new document..}}})