gpt4 book ai didi

java - MongoDB $regex 查询 "end with"特定字符

转载 作者:行者123 更新时间:2023-11-29 04:54:28 25 4
gpt4 key购买 nike

我无法从名为 Matrix 的数组中删除用于键匹配的对象

 BasicDBObject where = new BasicDBObject();
where.put("INSTITUTION_ID", instid);
where.put("RuleID", ruleid);

BasicDBObject obj1 = new BasicDBObject();
obj1.put("Matrix.Key",new BasicDBObject("$regex","/"+json.getString("Code")+"$/"));

collection.update(where,new BasicDBObject("$pull", obj1));

上面的代码没有从数组中删除对象。数组的结构可以在下面找到

"Matrix" : [
{
"Key" : "6M",
"value" : "Queue"
},
{
"Key" : "6N",
"value" : "Queue"
},
{
"Key" : "6O",
"value" : "Queue"
}]

最佳答案

命令行客户端

我建议在使用 Java 表示法编写查询之前,首先在 mongo 控制台中使用常规 JavaScript 语法测试它们。以下查询对我有用。

数据

db.matrix.insert(
{
INSTITUTION_ID: 1,
RuleID: 2,
Matrix: [
{
"Key": "6M",
"value": "Queue"
},
{
"Key": "6N",
"value": "Queue"
},
{
"Key": "6O",
"value": "Queue"
}
]
})

查询

db.matrix.update(
{
INSTITUTION_ID: 1,
RuleID: 2,
},
{
$pull:
{
Matrix:
{
Key:
{
$regex: /M$/
}
}
}
})

更新后的数据

{
"INSTITUTION_ID" : 1.0000000000000000,
"RuleID" : 2.0000000000000000,
"Matrix" : [
{
"Key" : "6N",
"value" : "Queue"
},
{
"Key" : "6O",
"value" : "Queue"
}
]
}

Java

我不确定这个更新查询应该如何用 Java 表示,但是试试这个:

BasicDBObject where =
new BasicDBObject()
.put("INSTITUTION_ID", instid);
.put("RuleID", ruleid);

BasicDBObject update =
new BasicDBObject("$pull",
new BasicDBObject("Matrix",
new BasicDBObject("Key",
new BasicDBObject("$regex",
java.util.regex.Pattern.compile(json.getString("Code") + "$")))));

collection.update(where, update);

关于java - MongoDB $regex 查询 "end with"特定字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34290473/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com