2 回答

TA貢獻(xiàn)1827條經(jīng)驗(yàn) 獲得超8個(gè)贊
以前并沒(méi)有留意用JavaScript管理MongoDB,不過(guò)這個(gè)還是很有用的功能。特別是可以寫(xiě)一些定時(shí)腳本,定期檢查數(shù)據(jù)庫(kù),做一些管理任務(wù)。
1. mongo shell中可以直接運(yùn)行JavaScript代碼
比如:
> new Date()
ISODate("2013-12-12T07:37:00.074Z")
> x = new Date();
ISODate("2013-12-12T07:37:05.724Z")
> x.getTime();
1386833825724
> var y = Date();
> y.getTime()
Thu Dec 12 15:37:26.805 TypeError: Object Thu Dec 12 2013 15:37:21 GMT+0800 (CST) has no method 'getTime'
>
如果想獲得epoch以來(lái)的毫秒數(shù),必須用new Date()。
而Date(),似乎就只是一個(gè)函數(shù),返回一個(gè)字符串而已。沒(méi)什么大作用,反而容易混淆人的概念。
b. Date對(duì)象提供了getTime()
2. 查詢語(yǔ)句中,可以用$where operator來(lái)執(zhí)行JavaScript函數(shù), 比如:
db.display.find({$and: [{$where: function() {return new Date().getTime(
3. 可以將代碼寫(xiě)到一個(gè)js文件中,然后用mongo命令執(zhí)行
比如:下面將當(dāng)前時(shí)間和last_active_time字段的值的差大于300秒的,狀態(tài)為offline的document找出來(lái),并顯示。
cursor = db.display.find({$and: [{$where: function() {return new Date().getTime() / 1000 - this.last_active_time > 300}}, {status: "offline"}]})
while (cursor.hasNext()) {
printjson(cursor.next());
}
然后這樣執(zhí)行:
mongo localhost/mydb test.js

TA貢獻(xiàn)1776條經(jīng)驗(yàn) 獲得超12個(gè)贊
1. mongo shell中可以直接運(yùn)行JavaScript代碼
比如:
> new Date()
ISODate("2013-12-12T07:37:00.074Z")
> x = new Date();
ISODate("2013-12-12T07:37:05.724Z")
> x.getTime();
1386833825724
> var y = Date();
> y.getTime()
Thu Dec 12 15:37:26.805 TypeError: Object Thu Dec 12 2013 15:37:21 GMT+0800 (CST) has no method 'getTime'
>
如果想獲得epoch以來(lái)的毫秒數(shù),必須用new Date()。
而Date(),似乎就只是一個(gè)函數(shù),返回一個(gè)字符串而已。沒(méi)什么大作用,反而容易混淆人的概念。
b. Date對(duì)象提供了getTime()
2. 查詢語(yǔ)句中,可以用$where operator來(lái)執(zhí)行JavaScript函數(shù), 比如:
db.display.find({$and: [{$where: function() {return new Date().getTime(
3. 可以將代碼寫(xiě)到一個(gè)js文件中,然后用mongo命令執(zhí)行
比如:下面將當(dāng)前時(shí)間和last_active_time字段的值的差大于300秒的,狀態(tài)為offline的document找出來(lái),并顯示。
cursor = db.display.find({$and: [{$where: function() {return new Date().getTime() / 1000 - this.last_active_time > 300}}, {status: "offline"}]})
while (cursor.hasNext()) {
printjson(cursor.next());
}
然后這樣執(zhí)行:
mongo localhost/mydb test.js
- 2 回答
- 0 關(guān)注
- 825 瀏覽
添加回答
舉報(bào)