MongoDB:结合两个.find()语句

时间:2015-10-01 10:16:15

标签: java mongodb querying

使用Java。我有两个.find()查询,我想要组合并获得一个包含两个查询结果的Document。我已经设法像这样单独创建它们。请注意,查询位于两个不同的顶级字段中。下面的最后一个语句是对具有两个条件的同一字段的查询。

$rules = array(
    'st'   => 'required',
    'capt' => 'required|numeric|same:' . $getsCapt
);

FindIterable<Document> iterable = db.getCollection("1dag").find(new Document("id", "10"));

我找不到任何关于此的文档。 这是我应该使用“$ and”或“$ where”语句吗?

编辑是这样做的吗?

FindIterable<Document> iterable2 = db.getCollection("1dag").find(
                new Document().append("timestamp", new Document()
                        .append("$gte",startTime)
                        .append("$lte",endTime)));

2 个答案:

答案 0 :(得分:1)

您的查询将完美无缺。

查询db.inventory.find({id:{$eq:10}}) 相当于db.inventory.find({id: 10})

简化您的查询:

FindIterable<Document> iterable7 = db.getCollection("1dag").find(
            new Document().append("timestamp", new Document()
                            .append("$gte", startTime)
                            .append("$lte", endTime))
                    .append("id",10));

答案 1 :(得分:1)

为以下mongo shell查询创建等效的Java查询

db.getCollection("1dag").find({
    "id": "10",
    "timestamp": {
        "$gte": 1412204098,
        "$lte": 1412204099
    }
})

您应该通过在查询文档中添加条件来为多个查询条件指定logical conjunction (AND)

FindIterable<Document> iterable = db.getCollection("1dag").find(
        new Document("id", "10")
            .append("timestamp", 
                new Document("$gte", 1412204098)
                     .append("$lte", 1412204099)
            )
    );