2016-12-14 57 views
0

这是存储在mongo db中的数据的值。我如何能够检索“HomeTown”的所有数据并将其全部存储到列表中?我的列表将包含AA,AA,BB,BB等......我想使用该数组列表创建每个家乡的for循环。如何将mongo数据库的列中的所有值都检索到ArrayList中?

样品蒙戈数据

[{ "_id" : { "$oid" : "4ceb753a70fdf877ef5113ca"} , "HomeTown" : "AA" , 
"PhoneNumber" : { "CustName" : "xxx" , "Number" : "3403290"}, 
"MobileNumber" : { "CustName" : "yyy" , "Number" : "9323304302"}}] 

    [{ "_id" : { "$oid" : "4ceb753a70fdf877ef5113ca"} , "HomeTown" : "AA" , 
"PhoneNumber" : { "CustName" : "xxx" , "Number" : "3403290"}, 
"MobileNumber" : { "CustName" : "yyy" , "Number" : "9323304302"}}] 

    [{ "_id" : { "$oid" : "4ceb753a70fdf877ef5113ca"} , "HomeTown" : "BB" , 
"PhoneNumber" : { "CustName" : "xxx" , "Number" : "3403290"}, 
"MobileNumber" : { "CustName" : "yyy" , "Number" : "9323304302"}}] 

    [{ "_id" : { "$oid" : "4ceb753a70fdf877ef5113ca"} , "HomeTown" : "BB" , 
"PhoneNumber" : { "CustName" : "xxx" , "Number" : "3403290"}, 
"MobileNumber" : { "CustName" : "yyy" , "Number" : "9323304302"}}] 

如何我可以得到所有在Java中“故乡”的值到一个数组?我正在尝试为HomeTown名称创建一个for循环。我目前通过Spring启动使用mongodb依赖。我不知道我将如何实现MongoDB到我的Java使用mongo数据库。

尝试/问题

我可以使用下面的代码列表检索MongoDB的值。我正试图将此列表转换为数组列表。上objLst.get

public List<AppPortModel> getAppPortList() { 
List<ApServerModel> objLst = mongoOperations.findAll(ApServerModel.class); 

String[] apServerArray = new String[objLst.size()]; 
for(int i = 0; i < objLst.size(); i++) { 
      apServerArray[i] = objLst.get(i); 
     } 

错误(ⅰ)

Type mismatch: cannot convert from ApServerModel to String 

尝试#2按照实施例萨加尔

 @Autowired 
    MongoOperations mongoOperations; 

MongoCollection<ApServerModel> myCollection = **mongoOperations.getCollection("apAllCustomer");** 

List<ApServerModel> result = myCollection.find().into(new ArrayList<>()); 

错误上mongoOperations.getCollection

Type mismatch: cannot convert from DBCollection to MongoCollection<ApServerModel> 
+0

你尝试过什么?请阅读http://stackoverflow.com/help/how-to-ask并编辑您的问题。 – StackFlowed

+0

这是JSON格式吗? –

+0

@HovercraftFullOfEels这些是存储在mongo数据库中的数据。 – Jesse

回答

1

看起来你正在使用蒙戈3.X driver.You'll需要使用这样的事情。

MongoClient mongoClient = new MongoClient(); 
MongoDatabase db = mongoClient.getDatabase("mkoydb"); 
MongoCollection<Document> myCollection = db.getCollection("apAllCustomer"); 
List<Document> result = myCollection.find().into(new ArrayList<>()); 

修复了尝试1:

public List<AppPortModel> getAppPortList() { 
    List<ApServerModel> objLst = mongoOperations.findAll(ApServerModel.class); 
    String[] apServerArray = new String[objLst.size()]; 
    for(int i = 0; i < objLst.size(); i++) { 
     apServerArray[i] = objLst.get(i).getHomeTown(); 
} 

修复了尝试2:

DBCollection dbCollection = mongoOperations.findAll(AppServreModel.class, "apAllCustomer"); 
+0

mongodb的这个脚本会在云代工厂工作吗?我上传了一个带有一些mongodb插件的应用程序,并且该应用程序从未加载过。 – Jesse

+0

它应该尝试一下。这不是特定的春天。 – Veeram

+0

我试过你的例子,但我收到一些语法错误。我在帖子中发布错误。 – Jesse

0

您可以拨打toArray(),直观地返回List<DBObject>

List<DBObject> myList = null; 
     DBCursor myCursor=myCollection.find(new BasicDBObject(),"HomeTown"); 
     myList = myCursor.toArray(); 

,如果你使用的是Java驱动程序与3.0及以上版本,你也可以做

collection.find().projection(Projections.include("HomeTown")); 
相关问题