为什么 mongo-java-驱动程序不存在 eq?
Why eq doesn't exist for mongo-java-driver?
我在 mongodb tutorial for java 中找到了有关如何从 mongo 集合中查询的信息,但是他们使用的 eq
对我不起作用!您知道如何使用 mongo 和 java 从集合中过滤文档吗?
这是我的尝试:
package Database;
import org.bson.Document;
import com.mongodb.MongoClient;
import com.mongodb.MongoClientURI;
import com.mongodb.client.FindIterable;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
public class Whosebug {
public static void main(String[] args) {
// insert something to mongo:
final String URI = "mongodb://localhost:27017";
final String DB = "WhosebugQuestion";
final String COLLECTION = "eqDoesntExcist";
MongoClientURI connection = new MongoClientURI(URI);
MongoClient mongo = new MongoClient(connection);
MongoDatabase database = mongo.getDatabase(DB);
MongoCollection<Document> collection = database.getCollection(COLLECTION);
Document doc = new Document("name", "Troy").append("height", 185);
collection.insertOne(doc);
doc = new Document("name", "Ann").append("height", 175);
collection.insertOne(doc);
// read something from mongo
FindIterable<Document> findIt = collection.find(eq("name", "Troy"));
// ERROR!!! the method eq(String, String) is undefined!
mongo.close();
}
}
我想要这样的东西:
SELECT * from eqDoesntExcist WHERE name = "Troy"
你不能这样做:
collection.find(eq("name", "Troy"));
因为编译器会在您的 class Whosebug
中期望一个名为 eq
的方法,而这不是您需要的..
您要查找的内容已在 Filter class
中定义
public static <TItem> Bson eq(String fieldName, Item value)
可能是
collection.find(Filters.eq("name", "Troy"));
您可以使用 eq
Filter
作为:
Bson bsonFilter = Filters.eq("name", "Troy");
FindIterable<Document> findIt = collection.find(bsonFilter);
或者让它看起来像文档建议的那样包括方法调用的静态导入 Filters.eq
import static com.mongodb.client.model.Filters.eq;
并进一步使用与您相同的代码:
FindIterable<Document> findIt = collection.find(eq("name", "Troy")); // static import is the key to such syntax
我在 mongodb tutorial for java 中找到了有关如何从 mongo 集合中查询的信息,但是他们使用的 eq
对我不起作用!您知道如何使用 mongo 和 java 从集合中过滤文档吗?
这是我的尝试:
package Database;
import org.bson.Document;
import com.mongodb.MongoClient;
import com.mongodb.MongoClientURI;
import com.mongodb.client.FindIterable;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
public class Whosebug {
public static void main(String[] args) {
// insert something to mongo:
final String URI = "mongodb://localhost:27017";
final String DB = "WhosebugQuestion";
final String COLLECTION = "eqDoesntExcist";
MongoClientURI connection = new MongoClientURI(URI);
MongoClient mongo = new MongoClient(connection);
MongoDatabase database = mongo.getDatabase(DB);
MongoCollection<Document> collection = database.getCollection(COLLECTION);
Document doc = new Document("name", "Troy").append("height", 185);
collection.insertOne(doc);
doc = new Document("name", "Ann").append("height", 175);
collection.insertOne(doc);
// read something from mongo
FindIterable<Document> findIt = collection.find(eq("name", "Troy"));
// ERROR!!! the method eq(String, String) is undefined!
mongo.close();
}
}
我想要这样的东西:
SELECT * from eqDoesntExcist WHERE name = "Troy"
你不能这样做:
collection.find(eq("name", "Troy"));
因为编译器会在您的 class Whosebug
中期望一个名为 eq
的方法,而这不是您需要的..
您要查找的内容已在 Filter class
中定义public static <TItem> Bson eq(String fieldName, Item value)
可能是
collection.find(Filters.eq("name", "Troy"));
您可以使用 eq
Filter
作为:
Bson bsonFilter = Filters.eq("name", "Troy");
FindIterable<Document> findIt = collection.find(bsonFilter);
或者让它看起来像文档建议的那样包括方法调用的静态导入 Filters.eq
import static com.mongodb.client.model.Filters.eq;
并进一步使用与您相同的代码:
FindIterable<Document> findIt = collection.find(eq("name", "Troy")); // static import is the key to such syntax