【问题标题】:How to add a key value pair into an array in mongo query [duplicate]如何在mongo查询中将键值对添加到数组中[重复]
【发布时间】:2019-06-05 16:50:01
【问题描述】:

我在将键值对添加到同名数组时遇到问题。有没有办法根据索引添加?

我已尝试在有效的搜索查询中查找关键字。但是更新会将其添加到文档的底部

db.getCollection('siteLog').updateOne(
{
    'site':'test1',
    'items.suspiciousActivity.source': 'Account Added to Admin Group'
},
    {$set:
        {'items.suspiciousActivity.source.Account Added to Admin Group' : 'summary':'test1'}
     })

它应该与另一个键值对一起添加到底部

"items" : [ 
        {
            "suspiciousActivity" : {
                "source" : "Account Added to Admin Group",
                "count" : "2",
                "summary" : "Test summary for this"
            }
        }, 
        {
            "suspiciousActivity" : {
                "source" : "Palo Alto FW - Local Account Login",
                "count" : "2",
                "summary" : "Another test summary"
            }
        }, 
        {
            "suspiciousActivity" : {
                "source" : "Suspicious Failed Logon Attempts",
                "count" : "2",
                "summary": "more summaries"
            }
        }, 

【问题讨论】:

  • 呃……你到底想做什么?你能澄清一下需要在哪里添加这些对吗?您说“它应该与另一个键值对一起添加到底部”,但您还说“但是更新会将它添加到文档的底部”。哪一种让我觉得你不想要那个,同时你又想要?此外,如果您有字典,它无论如何都不是完全“有序”或“排序”的,因为您通过键访问值,因此您不需要索引它。
  • 它将它添加到 items 数组之外而不是可疑活动中。 "items" : [ { "suspiciousActivity" : { "source" : "Account Added to Admin Group", "count" : "2",

标签: python mongodb pymongo


【解决方案1】:

您需要使用$ 来获取正确的items 索引,如下所示:

db.getCollection('siteLog').updateOne({
    'site': 'test1',
    'items.suspiciousActivity.source': 'Account Added to Admin Group'
}, {
    $set: {
        'items.$.suspiciousActivity.summary': 'test1'
    }
})

【讨论】:

    猜你喜欢
    • 2020-06-10
    • 2014-08-07
    • 2016-01-23
    • 2021-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-21
    • 2018-05-24
    相关资源
    最近更新 更多