Java 如何在android代码中创建MongoID?

Java 如何在android代码中创建MongoID?,java,android,mongodb,mongodb-query,gson,Java,Android,Mongodb,Mongodb Query,Gson,我正在开发android中支持mongoDB的应用程序。 我想从java代码创建MongoID并将其发送到我的服务器 _id = new JSONObject().put("$id", ""); 这是我的密码 我想创建这个json { "_id" : ObjectId("59b7bcdf92e706382b00009f"), "user_id" : "6bb82a99-bccd-4868-a799-55e7d28f969c", "is_active" : false, "_slugs" : [

我正在开发android中支持mongoDB的应用程序。 我想从java代码创建MongoID并将其发送到我的服务器

_id = new JSONObject().put("$id", "");
这是我的密码

我想创建这个json

{
"_id" : ObjectId("59b7bcdf92e706382b00009f"),
"user_id" : "6bb82a99-bccd-4868-a799-55e7d28f969c",
"is_active" : false,
"_slugs" : [ 
    "aaa"
],
"facility_name" : "aaa",
"industry_id" : 1,
"old_industry_id" : 1,
"established_date" : "1994-06-01",
"summary" : "this is test",
"facility_website" : "www.xxx.com",
"contact" : {
    "_id" : ObjectId("4637gdff92jhsgd378364y"),
    "info_type" : "PROFILE_INFO",
    "name" : "xxxxxxxxxx",
    "mobileNumber" : "xxxxxxxxx",
    "email" : "xxxxxxx@gmail.com",
    "shown_on_profile" : true
}}
但是我从java代码中得到了这个Json

{
"_id" : ObjectId("59b7bcdf92e706382b00009f"),
"user_id" : "6bb82a99-bccd-4868-a799-55e7d28f969c",
"is_active" : false,
"_slugs" : [ 
    "aaa"
],
"facility_name" : "aaa",
"industry_id" : 1,
"old_industry_id" : 1,
"established_date" : "1994-06-01",
"summary" : "this is test",
"facility_website" : "www.xxx.com",
"contact" : {
    "_id" : "{}",
    "info_type" : "PROFILE_INFO",
    "name" : "xxxxxxxxxx",
    "mobileNumber" : "xxxxxxxxx",
    "email" : "xxxxxxx@gmail.com",
    "shown_on_profile" : true
}}
问题在“接触”对象中

这是我的java代码

String _id = new JsonObject().toString(); // this is Gson.JsonObject() object
JSONObject contact = new JSONObject();
contact.put("_id", _id);
contact.put("info_type", "PROFILE_INFO");
contact.put("name", "User-1");
contact.put("mobileNumber", "xxxxxxxxxx");
contact.put("email", "xxxxx@gmail.com");
contact.put("shown_on_profile", true);

MongoID由服务器自动生成。你需要做的是在没有MongoID的情况下发送你的联系人。服务器将在数据库中插入数据并返回刚刚创建的元素的MongoID,您可以将整个联系人或MongoID返回到您的Android应用程序以使用它。

正如@fandro所说,我已经解决了我的问题

服务器给我的mongoDB数据如下

{"_id":{"$id":"59b7bcdf92e706382b00009f"}}
我可以使用此代码访问此数据, 这是我的android代码

ID = jsonData.getJSONObject("_id).getString("$id");
为了生成新的ID,我在android中创建了空的JSONObject并将其传递给我的服务器

_id = new JSONObject().put("$id", "");
在我的服务器上,我检查id,如果它是空的,那么我从这个代码生成新的MongoID

<?php
$_id = $_POST['_id'];
if ($_id['$id'] == "")
 $_id = new MongoID();
?>


但在我的例子中,有许多jsonObject.like jsonObject在另一个jsonObject中。因此,你需要多次执行此操作:插入对象,获取objectID,发送具有上一个ID的第二个对象,然后获取第二个对象ID。@Mehul我的解决方案对你有帮助吗?我已将空jsonObject作为ID从android应用程序传递,然后在服务器上,我使用“new MongoID()”创建了新的MongoID。为了提高效率:这不是必需的,但它允许我们发布,而不必担心从后端获取对象,因为我们知道时间的头是什么。