gpt4 book ai didi

java - 使用java从Mongo集合中获取键值数组

转载 作者:可可西里 更新时间:2023-11-01 10:04:30 24 4
gpt4 key购买 nike

我的 Mongo 系列是这样的:

db.user.find()
{"id":"11","name" : "a1", "age":"12", "add":"assddd"}
{"id":"11","name" : "a2", "age":"12", "add":"assddsaddd"}
{"id":"10","name" : "b2", "age":"12", "add":"assddsaddd"}

我只需要获取名称的数据并制作一个数组。

示例我只需要为 id = 11 获取数据所以我的输出应该是这样的:

name:[a1,a2]

我的 Java 代码是这样的:

//Mongo Connection
Mongo mongo = new Mongo("localhost", 27017);
DB db = mongo.getDB("test");

DBCollection table = db.getCollection("user");

BasicDBObject searchQuery = new BasicDBObject();
searchQuery.put("id", "11");

DBCursor cursor = table.find(searchQuery);
DBObject resultElement = null;
resultElement = cursor.next();

Object son = JSON.parse(resultElement.toString());
System.out.println(son);

while (cursor.hasNext()) {
System.out.println(cursor.next());
}

如何在此处获取数组中的特定键值对?

最佳答案

您将需要使用聚合框架并按“名称”字段分组,并使用 addToSet 构建这些名称的数组。

db.user.aggregate(
[
{ $match : { id : "11" } },
{ $group : { _id : "$id", name : { $addToSet : "$name" } } }

])

这将给出以下文件:

{
"_id" : "11",
"name" : [ "a2", "a1"]
}

然后您使用游标检索名称字段数组。

编辑

您可以像这样在 Java 中构造聚合函数:

    MongoClient mongoClient = null;

try {
mongoClient = new MongoClient("localhost", 27017);
} catch (UnknownHostException e) {}

DB db = mongoClient.getDB("test");

DBCollection collection = db.getCollection("user");

DBObject match = new BasicDBObject("$match", new BasicDBObject("id", "11"));
DBObject groupFields = new BasicDBObject("_id", "$name");
groupFields.put("name", new BasicDBObject("$addToSet", "$name"));
DBObject group = new BasicDBObject("$group", groupFields);

AggregationOutput output = collection.aggregate(match, group);

Iterable<DBObject> itResult = output.results();

for (DBObject dbo : itResult) {
List<String> items = (List<String>) dbo.get("name");
for(String item : items){
System.out.println(item);
}

}

通过使用 DBObjects,您可以构建聚合函数。在这里查看有关如何在 Java 中执行聚合函数的更多详细信息。 http://docs.mongodb.org/ecosystem/tutorial/use-aggregation-framework-with-java-driver/

按照此代码进行操作,如果有任何不清楚的地方,请告诉我,我会尽力为您澄清。

关于java - 使用java从Mongo集合中获取键值数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21812060/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com