1.GridFS存储大二进制文件
最简单的使用GridFS的方法就是使用mongofiles
mongofiles内置的MongoDB中,可以用来在GridFS中上传、下载、列示、查找和删除文件
把文件存入GridFS
mongo put fileName
列出GridFS内文件
mongo list
从GridFS内将文件写入文件系统
mongo get fileName
根据文件名查找文件
mongo search fileName
删除文件
mongo delete fileName
2.服务器端脚本
db.eval()用来的MongoDB的服务器端执行js脚本
db.eval("function(){ return 'helloworld'}")
使用eval的第二个参数传递js函数的参数
db.eval("function(a){ return a;}",[1])
存储js
system.js存放js变量
使用insert插入变量:
db.system.js.insert({"_id":"x","value":1})
db.system.js.insert({"_id":"y","value":2})
db.system.js.insert({"_id":"z","value":3})
db.eval("return x+y+z;")
也可以存放js代码
写日志函数log
db.system.js.insert({"_id":"log","value":
function(msg,level){
var levels = ["DEBUG","WARN","ERROR","FATAL"];
level = level ? level : 0;
var now = new Date();
print(now+" "+levels[level]+msg);
}
})
调用方法
db.eval("x=1;log('x is ' + x);x=2;log('x is greater than 2',1);")
输出日志
2017-05-06T09:01:03.550+0800 I - [js] Sat May 06 2017 09:01:03 GMT+0800 DEBUGx is 1
2017-05-06T09:01:03.550+0800 I - [js] Sat May 06 2017 09:01:03 GMT+0800 WARNx is greater than 2
3. 数据库引用 DBRef
{"$ref":collection,"$id":id_value,"$db":db}
参数顺序必须先是
ref 引用的集合
id 引用的文档id
再是可选的db 数据库
exp:
users集合:
db.users.insert([
{"_id":"mike","display_name":"MIKE_d"},
{"_id":"kritina","display_name":"KRISTINA"}
])
notes集合:
db.notes.insert([
{"_id":5,"author":"mike","text":"hello,i'm mike"},
{"_id":20,"author":"kritina","text":"O ever youthful,O ever weeping!","reference":[
{"$ref":"users","$id":"mike"},
{"$ref":"notes","$id":5}
]}
])
var note = db.notes.findOne({"_id":20})
note.reference.forEach(function(ref){
printjson(db[ref.$ref].findOne({"_id":ref.$id}));
})
输出:
{ "_id" : "mike", "display_name" : "MIKE_d" }
{ "_id" : 5, "author" : "mike", "text" : "hello,i'm mike" }