MongoDB常见问题

// 举例所用到的数据源:
{
        "_id" : ObjectId("5b59bece36de5915645c2208"),
        "userName" : "xcs",
        "userId" : "12",
        "userPwd" : "123",
        "orderList" : [ ],
        "cartList" : [
                {
                        "productImg" : "mi6.jpg",
                        "productPrice" : "1000",
                        "productName" : "小米1",
                        "productId" : "1003",
                        "_id" : ObjectId("5b40039e4c24436e05b4150f"),
                        "productNum" : 6,
                        "checked" : "1"
                },
                {
                        "productImg" : "1.jpg",
                        "productPrice" : "1200",
                        "productName" : "小米2",
                        "productId" : "1004",
                        "_id" : ObjectId("5b4004174c24436e05b41510"),
                        "productNum" : 1,
                        "checked" : "1"
                }
        ],
        "addressList" : [ ],
        "__v" : 18
}

 

1.请求参数获取不到。

  通过express写的接口,获取参数有三种方法,分别是:query,body,params,

get请求对应query

post请求对应body

看实例:

var express = require('express');
var router = express.Router();

// post:
router.post('/addCart',function (req, res, next) {
    var userId = req.body.userId ;
});

// get:
router.get('/addCart',function (req, res, next) {
    var userId = req.query.userId ;
});

2.从MongoDB查询返回的数据无法法修改。

  首先你要修改的字段,在必须存在于定义的模型里,否则,你是修改不了该字段的值。

// 这是mogoose 定义的一个schame模型
var mongoose = require('mongoose');
var Schema = mongoose.Schema;

var productSchema = new Schema({
  'productId':Number,
  'productName':String,
  'productPrice':Number,
  'productImg':String,
  'productNum':Number,
  //'checked':String  //这里屏蔽了该字段,若后面通过该模型查询出来的数据,改该字段的值是无法被修改的
});

module.exports = mongoose.model('goods',productSchema);

3.删除文档中的某个字段 update

db.users.update(
   , // query : update的查询条件,类似sql update查询内where后面的。 
   , // update : update的对象和一些更新的操作符(如$,$inc...)等,也可以理解为sql update查询内set后面的 
   {
     upsert: , // upsert : 可选,这个参数的意思是,如果不存在update的记录,是否插入objNew,true为插入,默认是false,不插入。 
     multi: , // multi : 可选,mongodb 默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来多条记录全部更新。 
     writeConcern:  // writeConcern :可选,抛出异常的级别。 
   }
)

//例如要把User表中address字段删除
db.users.update(
    {'userId':'12'},
    {
        $unset:{'address':''}
    },
    {  //这里可以简写,看下例
        'upsert':true,
        'multi':true,
    }
)

// 上面的例子 可以简写:
db.users.update(
    {'userId':'12'},
    {
        $unset:{'address':''}
    },
    true,true //注意顺序,upsert,multi,不要弄乱
)

 

你可能感兴趣的:(全栈,非关系型数据库,MongoDB,全栈)