Mongodb GridFS、服务器脚本和数据库引用

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" }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值