mongoose-ninjia
mongoexport转义
注意,如果-q后面的条件是用“”双引号括起来的话$符需要做一下转义\$
mongoexport -d xbm-wechat-api -c senddeliveryhistories -o senddeliveryhistories.json --jsonArray --query "{date:{\$in:['20150825','20150826']}}"
##
mongodb自带的 new date了,他的时间是utc的时间,和咱们中国时区少8个小时
不存在
SendDeliveryHistory.find({
date: current_date,
status: 0,
delivery_number : {
$exists: false
}
}).
存在,但size == 0的
SendDeliveryHistory.find({
date: current_date,
status: 0,
delivery_number : {
$not: {$size: 0}
}
}).
and 和 or
db.senddeliveryhistories.find({
"$and": [
{
created_at:{
"$gt": ISODate("2015-08-19T12:30:18.595Z")
}
}
,
{
created_at:{
"$lt": ISODate("2015-08-20T12:30:18.595Z")
}
}
]
})
SendDeliveryHistory.find({
status: 0,
delivery_number : {
$exists: false
}
}).and([{ created_at: {
"$gt": new Date(2015,07,19,22)
} }, { created_at: {
"$lt": new Date(2015,07,20,13,55)
} }]).then(function(SendDeliveryHistoryArr) {
var callback_data = [];
console.log(SendDeliveryHistoryArr)
});
说明
- new Date(2015,07,20,13,55)
- 2015年
- 07实际是8月
- 20日
- 20点
- 13分
- 55秒
eq
MongoDB没有"$eq"操作符,但是只有一个元素的"$in"的操作效果是一样的
数组查询
数据如下
/* 0 */
{
"_id" : ObjectId("55d83d7af492ea270c7812dc"),
"status" : 0,
"items" : [
{
"product" : ObjectId("55c9d91cb372a223713be929"),
"name" : "眼贴",
"count" : "3"
}
],
"type" : 0,
"__v" : 0
}
做法
db.senddeliveryhistories.find({
"items.0.name":{$in: ["眼贴"]}
})
不等于
remark: {
"$ne": "转货"
}
between and
可以翻译成lt and gt
db.getCollection('orders').find({"$and":[ {status2:1}, {status:'0'} ]}).count()
mongoose用$push的时候,都会创建自动_id,能否不创建
var LogSchema = new Schema({ contents: [{ string: { type: String }, levle: { type: Number }, }], });
Log.findByIdAndUpdate( id , { $push : { string : ‘123’ , level : 1 } } , { upsert : true } , callback );
执行后,数据库内容:
{ “id” : ObjectId("…"),“contents” : [ { “level” : 1, “content” : “123”, “_id” : ObjectId(“568137b4873c0d3b1ead3d1d”) }] }
“_id” : ObjectId(“568137b4873c0d3b1ead3d1d”) ,我不想要,能否去掉?
在schema设定的时候直接_id:false
https://cnodejs.org/topic/568139e1b9de25e81e01c1b5#568152ffb9de25e81e01c1bd