天天看點

mongodb日常操作&bug記錄

  • 190806更新:今天跑mongo用count()時報了一個錯
error: { “$err” : “not master and slaveOk=false”, “code” : 13435 }

stackoverflow一下:https://stackoverflow.com/questions/8990158/

需要在查詢前加一行

rs.slaveOk()
           
  • 日期查詢

'$gte' ——大于等于

'$gt' ——大于

'$lte'——小于等于

'$lt'——小于

db.getCollection("表名").find(
    {
        "userId" : 666.0,
        "acceptTime" : {
            "$gte" : ISODate("2019-07-22T04:00:00.000+0800"),
            "$lte" : ISODate("2019-07-22T11:30:00.000+0800")
        }
    },
    {
        "ismale" : 1.0,
        "grade" : 1.0,
        "age" : 1.0
    }
).sort(
    {
        "acceptTime" : -1.0
    }
);
           
  • 嵌套查詢
//方法1
db.表名.find(
    {userId:666,
        'college': {
            $class:{
              'ismale':true
           }
        }
    }).sort(
    {
        "acceptTime" : -1.0
    }
)
;

//方法2
db.表名.find(
     {
      userId:666,
    'college.ismale': true
}).sort(
    {
        "acceptTime" : -1.0
    }
)  
           
  • 導出為标準json時,要選export as document array
嚴謹的json格式。需要注意的是,從MongoDB中導出的json檔案其實并不是嚴謹的json格式表,隻是一串json對象排在一起的文檔,對象之間并沒有用逗号分隔開,以及開頭和結尾也缺失包含括号。是以如果你要導入的資料是這樣的格式,就不能加入–jsonArray的特性。
  • 聚合,且輸出其他字段
db.表名.aggregate([
{$match:{updateTime:{'$gte':'2019-07-30','$lte':'2019-07-31'}}},
{$group:
    {"_id": "$userId",
      count: {$sum: 1},
     "class":{$addToSet:"$class"}
  }
}
])