java - Mongo $pullAll 在对象数组上

标签 java arrays mongodb mongodb-query

目前我在 mongo 中有一个这样的数据结构:

{
    "_id": "field00048",
    "colorValues": [
        {
            "stateField": "Open1",
            "color": "purple"
        },
        {
            "stateField": "Open2",
            "color": "blue"
        }
    ]
}

我正在使用 mongo shell 创建一个查询,使用 $pullAll 通过在 stateField 字段上进行匹配来删除 colorValues 数组中的两个对象。我试过这些查询,但没有一个真正删除它们匹配的记录。
db.admin.fields.update({_id: "field00048"}, {$pullAll: {stateField: ["Open1", "Open2"]}});


db.admin.fields.update({_id: "field00048"}, {$pullAll: {colorValues: ["Open1", "Open2"]}});


db.admin.fields.update({_id: "field00048"}, {$pullAll: {colorValues: [{stateField:"Open1"}, {stateField:"Open2"}]}});


db.admin.fields.update({_id: "field00048"}, {$pullAll: {colorValues.stateField: ["Open1", "Open2"]}});


db.admin.fields.update({_id: "field00048"}, {$pullAll: {colorValues: stateField:{["Open1", "Open2"]}}});

有什么建议?

谢谢!

最佳答案

解决这个问题的查询是:

db.admin.fields.update({_id: "field00048"}, {$pull: {colorValues:{stateField:{$in: ["Open1", "Open2"]}}}}) 

关于java - Mongo $pullAll 在对象数组上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48932744/

相关文章:

java - POJO 中的数据库表

java - 通信链路故障 发送到服务器的最后一个数据包是 1 毫秒前。

java - 使用 UTF-8 进行波兰语字符编码只能在一个 JSP 文件中使用

node.js - 蒙戈错误: connection timed out

java - 递归求包括负数在内的数字之和

javascript - 从具有两个类的列计算两个总和

sql - 是否有一个 sql 函数来查找/连接数组中的元素?使用 Google BigQuery

php - 在 array_walk_recursive 中取消设置不起作用

regex - MongoDB 反向正则表达式

node.js - 如何使用可选的快速查询参数编写 Mongoose 查询?