【问题标题】:Search for a value inside a document [MongoDB]在文档中搜索值 [MongoDB]
【发布时间】:2020-01-16 12:07:46
【问题描述】:

我试图在 MongoDB 的文档中查找一个值,用 JAVA 编码,我举个例子:

主文档:

date: 12.2
rate: 9
people:
   1:George
   2:Candice
   3: James
   4: John
   x:
   x+1:

这只是理论上的,日期和汇率无关紧要 只是一个例子。

假设我有人员列,其中包含一个新文档,其中包含 1,2,3,4,x... 无限,我如何能够在人员列中搜索名称而不指定MongoDB 中的数字?

【问题讨论】:

    标签: java mongodb bson


    【解决方案1】:

    你可以试试这个https://docs.mongodb.com/manual/tutorial/query-arrays/ 或者您可以在 java 中使用 MongoTemplate 并使用 find 方法获取您案例中的人员列表。

    【讨论】:

    • 谢谢,您是否也知道仅凭那条信息我将如何找到另一列部分?我似乎真的无法用 Java 找到一个好的 MongoDB 文档,而那些不是 Java 的文档就是不适合它。
    • 你可以使用 MongoTemplate,它有很多内置函数,很容易。
    • 据我所知,MongoTemplate 只能通过 Spring(?) 获得,我真的不知道它是什么。
    【解决方案2】:

    我看到的是人是一张地图,所以你可以使用

    db.collection_name.findOne({"people":{$regex:".*James.*"}});
    

    这将根据正则表达式中的名称获取您的值

    【讨论】:

    • 我将如何用 Java 编写这个?尝试了很多组合并在线搜索,但我就是不明白。 Java中也不存在findOne(),只有Find()
    • 如果您使用的是付费版本的 studio3t 或任何其他应用程序,他们只会将您的 mongod 代码转换为相应的语言
    【解决方案3】:

    这是使用java

    Query query = new Query();
    query.addCriteria(Criteria.where("people").regex(".*James.*"));
    
    List<User> userTest = mongoOperation.find(query, User.class);// User.class is the collection-name
    System.out.println("query - " + query.toString());
    
    for (User user : userTest) {
        System.out.println("userTest - " + user);
    } 
    Output
    query - Query: { "people" : { "$regex" : ".*James.*"}}, Fields: null, Sort: null
    userTest - You will get the collection in array
    

    希望这对你有用。

    【讨论】:

      猜你喜欢
      • 2017-07-11
      • 1970-01-01
      • 2017-01-30
      • 1970-01-01
      • 2011-05-24
      • 1970-01-01
      • 2021-06-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多