【问题标题】:How to put condition in array item in mongodb如何在mongodb的数组项中放置条件
【发布时间】:2017-01-09 05:40:35
【问题描述】:

我在 mongo DB 中有数据。但我是 mongo 的新手。一些机构可以帮助我从 mongo 获得正确的记录。

  {
    "_id" : ObjectId("5872edaf9704dc26c0cb770e"),
    "type" : "PUSH_NOTIFICATION",
    "alerts" : [ 
        {
            "_id" : ObjectId("5872edab9704dc26c0cb770c"),
            "alertId" : NumberLong(0),
            "userId" : NumberLong(1000100),
            "alertCode" : 3,
            "ticketId" : NumberLong(0),
        }
    ],
    "registrationId" : "010080fab2695a984fc16737b4637b40d4bbcfbfcfb87752851c99fd925e8427",
    "deleted" : false
}

上面是mongo的单行表之一。我想获取ticketId 不等于0 的记录。ticketId 在Alert Object 中,它是警报数组。 我想用java写查询。

【问题讨论】:

    标签: spring mongodb mongodb-query


    【解决方案1】:

    你可以试试这个:

    BasicDBObject Query = new BasicDBObject();
    BasicDBObject fields = new BasicDBObject();
    Query.put("alerts.ticketId",0);
    fields.put("alerts.$", 1);
    
    DBCursor cursor = collection.find(Query, fields);
    while (cursor.hasNext()) {
        System.out.println(cursor.next());
    }
    

    希望这会有所帮助!

    【讨论】:

    • 谢谢,您知道如何使用条件 query.addCriteria 来设置相同的内容吗?
    • 什么是收藏?
    • query.addCriteria(Criteria.where("alerts.ticketId").not().in(0))
    【解决方案2】:

    你可以这样做:

    Query query = new Query();
    query.addCriteria(Criteria.where("alerts.ticketId").not().is(0));
    
    //OR
    
    query.addCriteria(Criteria.where("alerts.ticketId").ne(0));
    
    //OR using less than(lt) and greater than(gt) operator
    
    query.addCriteria(Criteria.where("alerts.ticketId").lt(0).gt(0));
    

    【讨论】:

      猜你喜欢
      • 2021-11-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-14
      • 2020-08-18
      • 2011-05-14
      相关资源
      最近更新 更多