Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 使用正则表达式的mongoDB update语句_Regex_Mongodb - Fatal编程技术网

Regex 使用正则表达式的mongoDB update语句

Regex 使用正则表达式的mongoDB update语句,regex,mongodb,Regex,Mongodb,我在mongoDB中有以下内容: { "_id" : ObjectId("552f4bf5344fbaee0f62ccef"), "name" : "testcase2", "steps" : [ { "spec1" : "postPet" }, { "spec2" : "putPet" }, { "spec2" : "g

我在mongoDB中有以下内容:

{
    "_id" : ObjectId("552f4bf5344fbaee0f62ccef"),
    "name" : "testcase2",
    "steps" : [
        {
            "spec1" : "postPet"
        },
        {
            "spec2" : "putPet"
        },
        {
            "spec2" : "getPetsHistory"
        }
    ]
}
我想从steps数组中提取一个元素。我只能使用以下值:“testcase2”、“PostSet”

我在更新查询中使用了regex,如下链接所述:

我的问题是:

db.testcaseCollection.update({"name" : "testcase3"}, {$pull : {"steps" :      {$regex: 'postPet'}}})
结果是:

WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 0 })

有人能帮我解决我做错了什么吗?

您正试图从基于正则表达式的数组中提取字符串。问题是数组由贴图/对象/任何东西组成,因此不能提取任何东西也就不足为奇了。这就是为什么会看到1
匹配
和0
修改

db.testcaseCollection.update({
  "name" : "testcase2"
}, {
   $pull : {
      steps: { spec1: {$regex: 'postPet' }}
   }
})

查看文档,了解如何使用

将元素“拉出”是什么意思?从json数组中删除元素您的更新查询匹配的是
testcase3
而不是
testcase2
。可能您没有任何与regex
postPet
匹配的元素。很抱歉,这是一个输入错误。我实际上使用了testcase2本身