就像我有三个'发送','发送'和'消息'字段,我只想显示消息字段的内容,其中我已经给出了一些条款。 文件{{_ id = 59c7d57c674cd5673c304936,to = 9915103230,from = 9915103229,date = 24/12/2017,message = HELLO WORLD}}
我只想回顾“你好世界”,而不是全文。
就像我想要的那样,String message = ????? --->我需要一些方法,因此String类型的变量获取值Hello World。
投影方法对我不起作用。
我正在使用JDBC MongoDB 3.5驱动程序。
答案 0 :(得分:1)
使用projection,find()的第二个可选参数。对于上下文,这将为您提供整个文档:
db.yourCollection.find({到:9915103230,从:9915103229});
这只会从结果中提供消息。只需将该字段命名并将其设置为1:
db.yourCollection.find({到:9915103230,从:9915103229},{消息:1};
您可以指定多个要返回的内容:
db.yourCollection.find({to:9915103230,from:9915103229},{message:1,to:1};
答案 1 :(得分:0)
这是一个有效的前卫。编译3.5驱动程序。
MongoClient mongoClient = new MongoClient();
MongoDatabase db = mongoClient.getDatabase( "testX" );
MongoCollection<BsonDocument> coll = db.getCollection("foo", BsonDocument.class);
coll.drop();
{
BsonDocument doc = new BsonDocument();
doc.put("from", new BsonInt32(23343223));
doc.put("to", new BsonInt32(23343223));
doc.put("msg", new BsonString("hello"));
coll.insertOne(doc);
doc.remove("_id");
doc.put("from", new BsonInt32(8889));
doc.put("to", new BsonInt32(99999));
doc.put("msg", new BsonString("goodbye"));
coll.insertOne(doc);
}
{
BsonDocument query = new BsonDocument("from", new BsonInt32(8889));
BsonDocument proj = new BsonDocument("msg", new BsonInt32(1));
proj.put("_id",new BsonInt32(0));
BsonDocument d2 = coll.find(query).projection(proj).first();
System.out.println(d2);
String s2 = coll.find(query).projection(proj).first().getString("msg").getValue();
System.out.println(s2);
}