gpt4 book ai didi

java - 如何使用 MongoDB Java 3 查询 "contains"?

转载 作者:可可西里 更新时间:2023-11-01 10:15:35 26 4
gpt4 key购买 nike

我正在使用 Java 驱动程序 3 来处理 MongoDB。我在一个集合中有以下文档。

  {
"_id" : ObjectId("59231945aefa1a301db180a1"),
"username" : "off",
"trx_type" : "pair",
"amount" : 100000,
"note" : "testpair 2:2"
},
{
"_id" : ObjectId("591d7a0b03c09b5142fb5602"),
"amount" : 100000,
"trx_type" : "pair",
"note" : "2:2",
"username" : "ok"
}

我想查询这两条记录。

如果我使用这个,从命令行:db.transactions.find("note":/2:2/)包含以下文档。

{
"_id" : ObjectId("5925e6a8aefa1a339a8c013f"),
"username" : "oktrade001",
"trx_type" : "pairing bonus",
"time" : NumberLong("1495656104204"),
"amount" : 100000,
"note" : "22:22"
}

尝试了几件事:

这只返回精确的“2:2”,不包含:文档交易 = transactions.find(eq("note", s + ":"+ s)).first();

这不起作用:字符串注释 = "/"+ s + ":"+ s + "/";
文件交易 = transactions.find(eq("note", note)).first();

阅读关于 $regex 的内容,找不到使用它用于 Mongo Java 3 的示例查询。

请帮忙...先谢谢你。

更新:所以...这是我需要在 Java 驱动程序中执行的 mongo 命令:db.transactions.find({"note": {"$regex":/2:2$/}}).pretty()在 mongo 命令行中尝试了这个,得到了我想要的。如何在 Java 驱动程序 3+ 中编写这个?另外...我需要将数字 2 更改为变量

最佳答案

您需要考虑到正则表达式模式是默认锚定的,因此需要匹配整个字符串

了解这一点,您可以轻松控制比赛的位置:

  • 字符串开始:

    transactions.find(regex("note", Pattern.quote(s) + ".*"));

  • 字符串结束:

    transactions.find(regex("note", ".*"+ Pattern.quote(s)));

  • 字符串中的任意位置:

    transactions.find(regex("note", ".*"+ Pattern.quote(s) + ".*"));

请注意:如果您需要在包含换行符的字符串中查找匹配项,您将需要一个 DOTALL 修饰符(它的内联版本是 (?s)):transactions .find(regex("note", "(?s).*"+ Pattern.quote(s) + ".*"));,或者像这样:transactions.find(regex( "note", "(?s).*"+ Pattern.quote(s) + ".*", "s"));。查看regex method docs .支持的修饰符列表(在 MongoDB 中称为 options)可以是 checked here .

关于java - 如何使用 MongoDB Java 3 查询 "contains"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44167845/

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