java查询mongodb,某个查询条件是一个数组,怎么实现

发布于 2022-09-06 11:26:09 字数 1214 浏览 10 评论 0

{ "_id" : ObjectId("5a5ec3cd50a8xxxxxxdb82"), "date" : "2018-01-17 11:32:29", "type" : "A", "id" : "xxx001"}
{ "_id" : ObjectId("5a5ec3cd50a8xxxxxxdb82"), "date" : "2018-01-17 11:32:29", "type" : "A", "id" : "xxx001"}
{ "_id" : ObjectId("5a5ec3cd50a8xxxxxxdb82"), "date" : "2018-01-17 11:32:29", "type" : "B", "id" : "xxx001"}
{ "_id" : ObjectId("5a5ec3cd50a8xxxxxxdb82"), "date" : "2018-01-17 11:32:29", "type" : "C", "id" : "xxx001"}
{ "_id" : ObjectId("5a5ec3cd50a8xxxxxxdb82"), "date" : "2018-01-17 11:32:29", "type" : "C", "id" : "xxx001"}
{ "_id" : ObjectId("5a5ec3cd50a8xxxxxxdb82"), "date" : "2018-01-17 11:32:29", "type" : "C", "id" : "xxx001"}
{ "_id" : ObjectId("5a5ec3cd50a8xxxxxxdb82"), "date" : "2018-01-17 11:32:29", "type" : "A", "id" : "xxx002"}

根据id和type去查询,其中type可能多个也可能没有,只用id查询:
比如:
id=xxx001的所有记录-这个好弄
id=xxx001且type=A的所有记录-这个也好弄

id=xxx001且type=A和B的所有记录-这个怎么实现
id=xxx001且type=C和B的所有记录-这个怎么实现

现在用下面的方式,但是type是多个条件就不管用了,只能一个
data.put("id", "xxx001");
data.put("type", "A"); //这里只能填一个,不好多个
basicDBObject = new BasicDBObject(data);
FindIterable<Document> iter = document.find(basicDBObject);

求解各位大神,java实现
谢谢

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

本宫微胖 2022-09-13 11:26:09

Google一下都有现成的:MongoDB Java: Finding objects in Mongo using QueryBuilder $in operator returns nothing

public static void getDocuments(List<Integer> documentIds) {
    BasicDBList docIds = new BasicDBList();
    docIds.addAll(documentIds)
    DBObject inClause = new BasicDBObject("$in", docIds);
    DBObject query = new BasicDBObject("Id", inClause);
    DBCursor dbCursor = mongoRule.getDatabase().getCollection("mycollection").find(query);
    System.out.println(dbCursor == null);
    if (dbCursor != null) {
        while (dbCursor.hasNext()) {
            System.out.println("object -  " + dbCursor.next());
        }
    }
}

我注意到你的_id全是一样的,所以你是不是已经使用$unwind把一个数组展开了?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文