mongodb導入json格式的文件的命抄令是襲mongoimport:
在下面的這個例子中,使用mongoimport命令將文件contacts.json中的內容導入user資料庫的contacts的數據表中。
mongoimport --db users --collection contacts --file contacts.json
具體過程演示如下:
切換到mongodb安裝的bin目錄下,啟動服務
./mongod --dbpath /home/test/ --logpath /home/test/log/xushuai.log --fork1
㈡ 如何使用MongoDB自帶的json庫來反序列json字元串
MongoDB的文檔使用BSON(Binary JSON)來組織數據,BSON類似於JSON,JSON只是一種簡單的表示數據的方式,只包含了6種數據類型(null、布爾、數字、字元串、數組及對象),不能完全滿足復雜業務的需要,因此,BSON還提供日期、32位數字、64位數字等類型。以下對mongoDB的類型進行簡要說明: 1、 null null類型用於表示空值或不存在的欄位,如:{「one」:null}2、 布爾類型 布爾類型有兩上值,』true』和』false』 ,如:{「one」:true}3、 32位整數 在由於mongoDB的控制台使用JS引擎進行輸入,而JS僅支持64位浮點數,所以32位整數將會被自動轉義;4、 64位整數 64位整數與32位整數一樣,在MongoDB控制台使用時,會轉義成64位浮點數。除外,如果資料庫本身存儲的數據類型無論是32位整數還是64位整數,使用MongoDB控制台獲取後,更改其文檔記錄(即使沒有修改整數本身,只修改了文檔的其他部分),並重新使用控制台寫回資料庫,則其數據類型也會變成了64位浮點數。 除外,使用控制台查看一個64位整數時,可能會不正確定,原因是有些64位的整數不能精確表示為64位浮點數,而控制台呈示都是64位浮點數。 5、 64位浮點數 MongoDB控制台數字的默認類型,如:{「one」:2.02} {「one」:10}6、 字元串 如:{「one」:」Hello World」}7、 符號 在MongoDB控制台中不支持這種類型,將自動轉義成字元串;8、 對象id 對象id是文檔中唯一的12位的ID ,
㈢ Mongodb多層嵌套數組如何精確查詢(內容處為格式化的json截圖,評論裡面是json的內容)
感覺你設計的數據結構太復雜,內嵌文檔太多層了,為什麼不一個學生一條記錄呢,這樣設計部是更簡潔嗎,查詢統計什麼的都很簡單,你現在的文檔一次查詢是得不到你想要的結構的,只能用聚合看能不能實現。
㈣ java如何讀取json文件並將其存入Mongodb資料庫中
因為Java操作mongodb需要使用相關的ORM驅動,所以你最好是讀取json數據後轉成Java對象然後調用驅動方法存入到資料庫中即可。
㈤ mongodb 存儲是json嗎
MongoDB存儲數據類型為BSON(Binary JSON).
MongoDB 是一個基於分布式文件存儲的資料庫。它將數據存儲為一個文檔,數據結構由鍵值(key=>value)對組成。MongoDB 文檔類似於 JSON 對象。欄位值可以包含其他文檔,數組及文檔數組。
數據格式示例:
什麼是BSON?
BSON是一種類json的一種二進制形式的存儲格式,簡稱Binary JSON,它和JSON一樣,支持內嵌的文檔對象和數組對象,但是BSON有JSON沒有的一些數據類型,如Date和BinData類型。
mongoDB對JSON串做了一些增加,使其可以支持更多的數據類型,並且將其作為存儲結構。
BSON可以做為網路數據交換的一種存儲形式,是一種schema-less的存儲形式,它的優點是輕量性、高靈活性、可遍歷性、高效性,但它的缺點是空間利用率不是很理想。
參考來源:
http://blog.csdn.net/leshami/article/details/52668870
https://www.mongodb.com/json-and-bson
㈥ 如何使用python處理帶有Mongodb的不規則json數據
#coding=utf-8
import sunburnt
import urllib
from pymongo import Connection
from bson.objectid import ObjectId
import logging
from datetime import datetime
import json
from time import mktime
from feedparser import _parse_date as parse_date
import time
import sys
import getopt
import ConfigParser
args = sys.argv[1:]
optlist, args = getopt.getopt(args, 'c:')
cmd_opt = {}
for opt in optlist:
cmd_opt[opt[0]] = opt[1]
conf_file = cmd_opt['-c']
config = ConfigParser.ConfigParser()
config.read(conf_file)
hostname = config.get("mongodb", "hostname")
port_num = int(config.get("mongodb", "port_num"))
db_name = config.get("mongodb", "db")
connection = Connection(hostname, port_num)
db = connection[db_name]
courseTable = db.course
lecTable = db.lecture
try:
f = file("json1-14/14.json")
s = json.load(f)
courseData = s["results"]["course"]
lecDataArr = s["results"]["lecture"]
f.close
print "get file content successfully!"
#insert course
courseId = courseTable.save(courseData)
courseId = str(courseId)
print "courseId: "+courseId
print "lec length: "+str(len(lecDataArr))
#insert lecture
lecIdArr = []
for lecData in lecDataArr:
lecData["course_id"] = courseId
lecId = lecTable.save(lecData)
lecIdArr.append(str(lecId))
# update course
courseTable.update({'_id':ObjectId(courseId)},
{"$set":{"lectures.lecture_id_list":lecIdArr}},
upsert=True, multi=True);
print 'insert successfully!'
except Exception, e:
print e
㈦ java程序中,如何把json對象轉換成mongodb對象,然後存到mongodb資料庫中
你使用的mongodb的Java驅動里有相應的存儲對象的方法,存儲的對象應該是Java對象,所以你需要把json對象轉換成Java對象然後存儲到mongodb中就可以了。
㈧ 怎麼讀取mongodb中的數據打包成json
在對mongodb中的欄位值進行解析的時候發現,因為這個值是json字元串,需要對其進行反序列版化。
解決方法:
首先想到了到h用權MongoDB自帶的json庫來反序列json字元串2012-3-23閱讀3840
評論0需求:
在對mongodb中的欄位值進行解析
㈨ js怎麼把mongodb裡面的數據以json形式輸出
js把mongodb裡面的數據以json形式輸出需要依賴外部js:
1、db.js從db獲取數據
var getUsersByCity = function(city, cb) {
db.users.find({'city': city}).toArray(cb);
}
2、輸出json格式的server.js
app.post("/get_users_list", function(req, res) {
var body = req.body;
db.getUsersByCity(body.city, function(err, data){
if (err) {
console.log(err);
return res(err);
} else {
console.log(data); //這里輸出json格式數據
return res.json(data);
}
});
});
㈩ 如何使用MongoDB結合Jackson JSON實現介面快速開發
通過按行讀取文件中的內容模擬Web應用各客戶端發來的數據,然後將它們存儲到MongoDB中;
輸出部分將實現一個按條件查詢,從MongoDB中得到的查詢結果將通過控制台輸出。這樣就能模擬Web應用服務端響應請求,將數據推送到客戶端頁面的場景了。
(特別注意:本文中設計到的所有源代碼都是UTF-8格式編碼的)
先實現一個連接屬性的配置
MongoDBConnConfig.java
package net.csdn.blog.chaijunkun;
public class MongoDBConnConfig {
//MongoDB主機名稱或IP
public static final String SERVER= "localhost";
//MongoDB埠
public static final int PORT= 27017;
//使用的資料庫名稱
public static final String ORDERS_DATABASE= "orders";
}
再實現一個Morphia框架與MongoDB的集成方法
MongoDBDataStore.java
package net.csdn.blog.chaijunkun;
import java.net.UnknownHostException;
import com.google.code.morphia.Datastore;
import com.google.code.morphia.Morphia;
import com.mongodb.Mongo;
import com.mongodb.MongoException;
/**
* MongoDB聯合Morphia框架生成DataStore的類
* @author chaijunkun
*
*/
public class MongoDBDataStore {
/**
* 生成Orders資料庫Datastore對象
* @return 返回Datastore對象 發生異常返回為null
*/
public static Datastore getOrdersInstance(){
Mongo connection = null;
try {
connection = new Mongo(MongoDBConnConfig.SERVER, MongoDBConnConfig.PORT);
} catch (UnknownHostException e) {
return null;
} catch (MongoException e) {
return null;
}
Morphia morphia= new Morphia();
return morphia.createDatastore(connection, MongoDBConnConfig.ORDERS_DATABASE);
}
}
我們還需要一個Java對象到MongoDB文檔和Java對象到輸出JSON對象的POJO實體:
OrderInfo.java
package net.csdn.blog.chaijunkun.entities;
import java.util.Date;
import org.bson.types.ObjectId;
import org.codehaus.jackson.annotate.JsonIgnore;
import org.codehaus.jackson.map.annotate.JsonDeserialize;
import org.codehaus.jackson.map.annotate.JsonSerialize;
import com.google.code.morphia.annotations.Entity;
import com.google.code.morphia.annotations.Id;
import com.google.code.morphia.annotations.PostPersist;
import com.google.code.morphia.annotations.PrePersist;
//morphia中的註解 標明該對象存入orderInfo集合中 並且不存儲類名
@Entity(value="orderInfo", noClassnameStored= true)
public class OrderInfo {
//morphia中的註解 標明該key為標識欄位(MongoDB中特殊的ObjectId欄位)
@Id
//Jackson中的註解 標明在序列化與反序列化過程中不使用該key
@JsonIgnore(value= true)
private ObjectId id;
private Long orderId;
private String proctName;
private Integer quantity;
private Float unitPrice;
//Jackson中的註解 標明該欄位使用自定義的DateSerializer類實現序列化
@JsonSerialize(using= DateSerializer.class)
//Jackson中的註解 標明該欄位使用自定義的DateDeserializer類實現反序列化
@JsonDeserialize(using= DateDeserializer.class)
private Date orderDate;
private String contactName;
private String address;
private String phone;
@SuppressWarnings("unused")
//morphia中的註解 指示在存入MongoDB之前的操作
@PrePersist
private void beforeSaving(){
System.out.println("即將保存對象:"+ this.toString());
}
@SuppressWarnings("unused")
//morphia中的註解 指示在存入MongoDB之後的操作
@PostPersist
private void afterSaving(){
System.out.println("對象保存完畢:"+ this.toString());
}
//以下就是Getters和Setters了
public ObjectId getId() {
return id;
}
public void setId(ObjectId id) {
this.id = id;
}
public Long getOrderId() {
return orderId;
}
public void setOrderId(Long orderId) {
this.orderId = orderId;
}
public String getProctName() {
return proctName;
}
public void setProctName(String proctName) {
this.proctName = proctName;
}
public Integer getQuantity() {
return quantity;
}
public void setQuantity(Integer quantity) {
this.quantity = quantity;
}
public Float getUnitPrice() {
return unitPrice;
}
public void setUnitPrice(Float unitPrice) {
this.unitPrice = unitPrice;
}
public Date getOrderDate() {
return orderDate;
}
public void setOrderDate(Date orderDate) {
this.orderDate = orderDate;
}
public String getContactName() {
return contactName;
}
public void setContactName(String contactName) {
this.contactName = contactName;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
}
我們注意到上面的POJO實體中包含Date(日期)類型的數據。這類數據特別指定了它的序列化與反序列化方法,下面我們來具體看一下:
序列化方法:DateSerializer.java
package net.csdn.blog.chaijunkun.entities;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import org.codehaus.jackson.JsonGenerator;
import org.codehaus.jackson.JsonProcessingException;
import org.codehaus.jackson.map.JsonSerializer;
import org.codehaus.jackson.map.SerializerProvider;
public class DateSerializer extends JsonSerializer<Date>{
@Override
public void serialize(Date date, JsonGenerator jsonGenerator, SerializerProvider serializerProvider)
throws IOException, JsonProcessingException {
SimpleDateFormat sdf= new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
String formatedDate= sdf.format(date);
jsonGenerator.writeString(formatedDate);
}
}
這其實是Jackson中的一個很實用的功能,通過自定義序列化器,可以實現Java對象到JSON的數據格式自定義。例如Date的格式我們可以任意改寫。上面的泛型類被具象為Date類型。重寫了serialize方法。輸入的date參數就是將要被序列化的數據,jsonGenerator就是序列化的上下文。當數據內容被整理好後將內容寫入序列化的上下文中就完成了自定義過程。
類似地,我們來看一下反序列化方法DateDeserializer.java
package net.csdn.blog.chaijunkun.entities;
import java.io.IOException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import org.codehaus.jackson.JsonParser;
import org.codehaus.jackson.JsonProcessingException;
import org.codehaus.jackson.map.DeserializationContext;
import org.codehaus.jackson.map.JsonDeserializer;
public class DateDeserializer extends JsonDeserializer<Date>{
@Override
public Date deserialize(JsonParser jsonParser, DeserializationContext deserializationContext)
throws IOException, JsonProcessingException {
String unformatedDate= jsonParser.getText();
SimpleDateFormat sdf= new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
Date retVal;
try {
retVal = sdf.parse(unformatedDate);
} catch (ParseException e) {
return null;
}
return retVal;
}
}
泛型的JSON反序列化類被我們具象成了Date類型的,並且重寫了deserialize方法。傳入的jsonParser是反序列化過程中的上下文,通過它我們可以找到當前處理的JSON欄位內容。然後將內容按照特定的要求來生成對應的數據類型(Date),然後作為返回值將其返回。此時POJO中相應的欄位就順利完成了反序列化。另外這樣做還能保證類型安全。