这是存储在mongo db中的数据值。如何检索" HomeTown"的所有数据?并将它们全部存储到列表中?我的列表将包含AA,AA,BB,BB等...我想使用该数组列表创建每个家乡的for循环。
示例mongo数据
[{ "_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"}}]
如何获得" HomeTown"的所有价值?在Java中进入一个数组?我正在尝试使用HomeTown名称创建一个for循环。我目前正通过Spring启动使用mongodb依赖。我不知道如何将mongodb实现到我的java中以使用mongo db。
尝试/问题
我能够使用以下代码检索列表中的mongodb值。我正在尝试将此列表转换为arraylist。
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);
}
objLst.get(i)
时出错Type mismatch: cannot convert from ApServerModel to String
在Sagar示例后尝试#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 :(得分:1)
看起来你正在使用mongo 3.x驱动程序。你需要使用这样的东西。
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");
答案 1 :(得分:0)
您可以直接致电toArray()
,List<DBObject>
。
List<DBObject> myList = null;
DBCursor myCursor=myCollection.find(new BasicDBObject(),"HomeTown");
myList = myCursor.toArray();
如果你使用版本3.0及更高版本的java驱动程序,你也可以
collection.find().projection(Projections.include("HomeTown"));
答案 2 :(得分:0)
您可以使用projection仅检索必填字段。
db.apAllCustomer.find( ..., { HomeTown: 1 } );
在Java中,它取决于您使用的API。请参阅Spring数据:
MongoDB的Java的: