在纯Javascript中,我可以编写这样的查询:
db.getCollection('someTable').find({
someArray:{$elemMatch:{$eq:ObjectId("SomeObjectId")}}
});
现在我需要用Java写这个。类似这样的.collection.find().filter…
但我似乎没有做对。上面的语句是如何翻译成java的?
感谢
这可能是您想要的:
MongoClient client = new MongoClient("localhost",27017);
MongoDatabase db = client.getDatabase("test");
db.getCollection("someTable").find(new BasicDBObject("someArray", new BasicDBObject("$elemMatch", new BasicDBObject("$eq", new BsonObjectId(new ObjectId("SomeObjectId"))))));
为此,您需要使用mongo客户端For java程序。
以下是mongojava的一些片段
import com.mongodb.ErrorCategory;
import com.mongodb.MongoWriteException;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
import org.bson.Document;
import org.bson.conversions.Bson;
import sun.misc.BASE64Encoder;
public class DocumentDAO {
final MongoClient mongoClient = new MongoClient(new MongoClientURI(mongoURIString));
final MongoDatabase mongoDatabase= mongoClient.getDatabase("Db");
public DocumentDAO(final MongoDatabase mongoDatabase) {
someCollection= mongoDatabase.getCollection("SomeCollecton");
}
Bson filter =new Document("objectId",objectName);
List <Document> all= someCollection.find(filter).into( new ArrayList<Document>());
for(Document cur:all)
{
obj=cur;
}}
Maven可以用来下载用于java的最新mongo驱动程序
<dependency>
<groupId>org.mongodb</groupId>
<artifactId>mongodb-driver</artifactId>
<version>3.0.0-rc0</version>
</dependency>