问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

怎么讲java对象写入mongo

发布网友 发布时间:2022-04-29 17:56

我来回答

2个回答

懂视网 时间:2022-04-29 22:18

展示当前所有数据库。 技术分享 2,转到某数据库下 技术分享   3,插入集合 技术分享 4,查找 技术分享   插入后,会生成多余的全局唯一标示ID 5,批量插入: 技术分享 6,查找 技术分享     来自为知笔记(Wiz)



MongoDB基本写入和读出操作

标签:

热心网友 时间:2022-04-29 19:26

Mongodb官方提供的Java驱动,保存与读取,需要的者是DBObject对象,这是一个接口,实现put,get等方法,跟map类似,如果我们要直接把普通的java对象保存到mongodb,就需要先转换成DBObject对象,或者直接实现DBObject接口,操作起来相当复杂。还好,monodb驱动带了把json转换成DBObject对象的功能,加上Google的Gson,就可以实现把普通的对象保存到mongodb中。如果要从mogodb中读出对象,反过来操作即可,但有一点需要注意的是,mongodb的文档没有固定的字段,所以用Gson转换,可能因为各个文档属性不同,转出的对象属性都是空的,要确保在插入时都是插入同一个类的对象。
下面的例子是把User对象插入到Mongodb中,并读出来
User.java:
package com.mongo;

public class User {
String name;
int age;
Oid _id;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
/**
* Mongodb会自动生成ObjectId
* @author fhp
*
*/
public class Oid{
String $oid;
public String get$oid() {
return $oid;
}

public void set$oid(String $oid) {
this.$oid = $oid;
}

}
}
Main.java:
package com.mongo;

import java.net.UnknownHostException;

import com.google.gson.Gson;
import com.mongodb.DB;
import com.mongodb.DBCollection;
import com.mongodb.DBCursor;
import com.mongodb.DBObject;
import com.mongodb.MongoClient;
import com.mongodb.util.JSON;

public class Main {

/**
* @param args
* @throws UnknownHostException
*/
public static void main(String[] args) throws UnknownHostException {
// TODO Auto-generated method stub
MongoClient mongoClient = new MongoClient();

DB psdoc = mongoClient.getDB("psdoc");
DBCollection user=psdoc.getCollection("user");

User u1=new User();
u1.setAge(20);
u1.setName("ssss");
Gson gson=new Gson();
//转换成json字符串,再转换成DBObject对象
DBObject dbObject = (DBObject) JSON.parse(gson.toJson(u1));
//插入数据库
user.insert(dbObject);

DBCursor cursor=user.find();
while(cursor.hasNext())
{
DBObject obj=cursor.next();
//反转
User u=gson.fromJson(obj.toString(), User.class);
System.out.println(u.name);
}
}

}
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
抖音弹幕怎么关掉?怎么关闭抖音弹幕? 惠普LaserJet P3005D是否支持B5纸的双面打印? word打印出图片总是缺一部分怎么办-word打印图片不完整怎么解决_百度... 理想one哪里产的车辆? 抚州抚州ONE在哪里? one地址在哪里? 如何在图片上写字(如何在图片上添加文字) 网商贷为什么钱没到账 高级经济师职称怎么评 高级经济师需要评审吗 优酷的网页纵向排列是怎么回事,如何解决 优酷怎么竖屏播放电影? 用手机拍摄的视频不管是横拍还是竖拍传到优酷都是竖屏的,我的手机是vivo x6plus。 谁可以告诉我优酷.爱奇艺.腾讯视频不能横屏看怎么设置回来啊?以前一播就是横屏现在都是竖屏求大神赐 韵达快递一联单 4302493010775? 为什么我用优酷搜索搜索出来后显示不正常,都变成一侧排列了, (韵达快递一联单 4303076462900)? 请问我买的海信U950手机,为什么看爱奇艺、优酷等网站的视频,只能竖屏看... (韵达快递一联单 4310927567866)请问到什么地方了? (韵达快递一联单 4304401552954)? 最新的优酷怎样竖屏观看? 韵达快递一联单 4302631138199? 手机优酷缓存后一打开视频就是全屏的,不能退到小窗,就是竖屏那种吗?就是下面这两种的切换! 韵达快递一联单 4305785677161? 韵达一联单号查询4303208039426? 安卓版优酷,总是自动旋转屏幕,很烦。怎么设置成总是横屏显示??求助 韵达快递一联单1 4307434660354物流信息? 为啥电视上所有显示优酷视频的都是竖屏? 韵达一联单快递单号查询YT4303139938186? ipad pro 10.5 怎么转 底部发红 优酷4.4安卓版客户端怎样才能竖屏播放?目前无论是满屏画面还是微缩画面都是横屏的界面,要崩溃了 吃李子不能与什么同食 李子和什么食物不能一起吃? 李子不能和什么一起吃呢? 李子食用禁忌,不能和什么一起吃 李子忌什么食物相克 格式工厂转换视频,怎么能尽量不增大文件,又能保持画面质量不损失? 商业承兑被追索的后果是什么 人造沸石与自然沸石 两条直线的夹角公式是什么? 水蒸汽辅助结晶制备沸石怎么操作 李子不能和啥一起吃,几个小时才能吃和他相克的东西 商票质押后,承兑人还钱是还给谁 华富基金管理有限公司怎么样 矿物的人工合成技术 华富基金公司业绩如何,口碑如何,现在可以买点他家的基金吗? 知道两条直线的方程,两条直线的夹角公式是什么 向客户收取的承兑汇票贴现利息如何开票 水热晶化法是最经典的沸石合成方法 是谁提出来的 求两条直线的夹角