gpt4 book ai didi

java - 从 mongo db 获取数据就像我们在 mysql 中一样?

转载 作者:行者123 更新时间:2023-11-29 00:16:07 27 4
gpt4 key购买 nike

我正在以这种方式向 mongodb 中插入一些值。

    MongoClient mongo = new MongoClient( "localhost" , 27017 );
DB db = mongo.getDB("test");
DBCollection table = db.getCollection("paramDescMapper");
String key = UUID.randomUUID().toString();
String value = "{\"param0\":\"Car Make\",\"param1\":\"Car Model\",\"param2\":\"Car Variant\",\"param3\":\"Car Year\",\"param4\":\"Car Number\"}";
JSONObject jsonObject = new JSONObject(value);

// create a document to store key and value
BasicDBObject document = new BasicDBObject();
document.put("apiKey", key);
document.put("apiParamDesc", jsonObject.toString());
table.insert(document);

就是这样插入数据的。

{ "_id" : { "$oid" : "534251125f1ab7ec747298cd"} , "apiKey" : "1eb9b9e3-3af1-4b25-b7ea-1f2fcb1d9af6" , "apiParamDesc" : "{\"param0\":\"Car Make\",\"param1\":\"Car Model\",\"param2\":\"Car Variant\",\"param3\":\"Car Year\",\"param4\":\"Car Number\"}"}

现在我想使用 apiKey 获取 apiParamDesc 值。就像我们如何在 mysql 中获取数据。

Select apiParamDesc where apiKey = '1eb9b9e3-3af1-4b25-b7ea-1f2fcb1d9af6';

我在谷歌上搜索了很多,但找不到任何东西。这就是我试图获得这个 apiParamDesc 的方式

    BasicDBObject whereQuery = new BasicDBObject();
whereQuery.put("apiKey", "1eb9b9e3-3af1-4b25-b7ea-1f2fcb1d9af6");
DBCursor cursor = table.find(whereQuery);
while(cursor.hasNext()) {
System.out.println(cursor.next());
}

但这给了我整行。我只想要字符串中的 apiParamDesc。

请帮帮我。

谢谢

最佳答案

您可以使用聚合框架轻松地做到这一点。以下是可以解决您的问题的示例:

// create our pipeline operations, first with the $match
DBObject match = new BasicDBObject("$match", new BasicDBObject("apiKey", "1eb9b9e3-3af1-4b25-b7ea-1f2fcb1d9af6"));

// build the $projection operation
DBObject fields = new BasicDBObject("apiParamDesc", 1);
fields.put("_id", 0);
DBObject project = new BasicDBObject("$project", fields );

// run aggregation
AggregationOutput output = collection.aggregate( match, project);

您也可以只使用 db.coll.find(< criteria >, < projection >);

BasicDBObject query = new BasicDBObject(new BasicDBObject("apiKey", "1eb9b9e3-3af1-4b25-b7ea-1f2fcb1d9af6"), new BasicDBObject("apiParamDesc", 1).append("_id", 0));

//Which is equivalent to a follwoing query
//'db.coll.find({"apiKey": "1eb9b9e3-3af1-4b25-b7ea-1f2fcb1d9af6"}, {"apiParamDesc": 1,"_id": 0});'

cursor = coll.find(query);


关于 "I want only apiParamDesc in a String." 的另一件事要告诉你, 如果你正在存储像

这样的字符串

"apiParamDesc" : "{\"param0\":\"Car Make\",\"param1\":\"Car Model\",\"param2\":\"Car Variant\",\"param3\":\"Car Year\",\"param4\":\"Car Number\"}

您不能查询像param0 这样的子级别字段, param1 ...您的数据应该如下所示:

{
"_id":{
"$oid":"534251125f1ab7ec747298cd"
},
"apiKey":"1eb9b9e3-3af1-4b25-b7ea-1f2fcb1d9af6",
"apiParamDesc":{
"param0":"Car Make",
"param1":"Car Model",
"param2":"Car Variant",
"param3":"Car Year",
"param4":"Car Number"
}
}

关于java - 从 mongo db 获取数据就像我们在 mysql 中一样?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22906216/

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