MongoDB-使用python更新
我想尝试向数组添加更多值,但因此两个值必须匹配。我用一个值工作,但不是用两个值。这就是我所拥有的:MongoDB-使用python更新,mongodb,python-2.7,Mongodb,Python 2.7,我想尝试向数组添加更多值,但因此两个值必须匹配。我用一个值工作,但不是用两个值。这就是我所拥有的: { "_id" : ObjectId( "50f1a05d00bf6832b03a01cb" ), "app" : "494258956", "keywords" : [ { "data" : [ { "device" : "software", "date" : Date( 1358012509633 ), "r
{ "_id" : ObjectId( "50f1a05d00bf6832b03a01cb" ),
"app" : "494258956",
"keywords" : [
{ "data" : [
{ "device" : "software",
"date" : Date( 1358012509633 ),
"rank" : 1,
"shop" : "143443" } ],
"keyword" : "test" } ] }
当我为关键字“test”和应用程序“494258956”添加了一个新的“data”时,应该向“data”添加一个新的集合,如下所示:
{ "_id" : ObjectId( "50f1a05d00bf6832b03a01cb" ),
"app" : "494258956",
"keywords" : [
{ "data" : [
{ "device" : "software",
"date" : Date( 1358012509633 ),
"rank" : 1,
"shop" : "143443" }
, { "device" : "software",
"date" : Date( 1358012599633 ),
"rank" : 2,
"shop" : "143443" }],
"keyword" : "test" } ] }
提前感谢。这似乎满足了您的要求(JavaScript语法):
当前不支持此操作-因为位置运算符
$
当前不适用于upsert。请投赞成票
解决方法可能是重新访问模式设计或不使用upsert的多个操作,并检查更新的项目数。你必须注意不要达到比赛状态,例如:
{关键字:{$exists:true}}
{keywords:{$exists:false}
查看$push操作员,谢谢。如果关键字存在,则该方法有效,但如果关键字不存在且必须插入数据集,则该方法无效。我刚得到一美元。你知道一个解决方法吗?我很确定这对于“插入”操作来说太复杂了。我认为您需要测试更新的结果,并在找不到项目时进行插入。
coll.update({
"app": "494258956",
"keywords": {
"$elemMatch": { "keyword": "test" }
}
},
{
"$push": {
"keywords.$.data": {
"device" : "software",
"date" : new Date( 1358012599633 ),
"rank" : 2,
"shop" : "143443"
}
}
}