zoukankan      html  css  js  c++  java
  • MongoDB操作

    一、MongoDB的DML语句

    在发布生产云服务器的时候,经常会出现导入脚本报错。以阿里云的MongoDB为例,目前只支持.csv,且导入经常失败,此时需要DML语句。

    insert()方法:

    下面是在inventory集合中插入一个三个字段的文档:

    db.inventory.insert( { _id: 10, type: "misc", item: "card", qty: 15 } )

    save()方法:

    使用save()方法插入一个文档,通过该方法保存一个不包含_id字段的文档或者包含_id字段但该字段值不存在集合中的文档。下面的示例创建一个新的文档在inventory集合:

    db.inventory.save( { type: "book", item: "notebook", qty: 40 } )

    当在使用save方法时,插入不指定_id时,会自动生成一个。

    Insert和Save的区别是:如果插入的集合的“_id”值,在集合中已经存在,用Insert执行插入操作会报异常,已经存在"_id"的键。用Save如果系统中没有相同的"_id"就执行插入操作,有的话就执行覆盖掉原来的值。相当于修改操作。

    update()方法:

    调用update()方法使用upsert标志创建一个新文档当没有匹配查询条件的文档时。下面的例子当inventory集合中没有包含{type:"books",item:"journal"}的文档时创建一个新文档:

    db.s_city.update(
      {
    
      cityName : "深圳"
      },
      {
      $set: {cityName:"深圳市"}
    });

    二、Criteria操作MongoDB

    基于:org.springframework.data.mongodb.core.query

    简单查询
    public List<Msg> getUserVideo(int userId) {
    Query query = createQuery("userId",userId);
    addToQuery(query, "body.type", 4);
    return queryListsByQuery(query);
    }
    查询返回一个字段
     public List<ObjectId> getPraiseIds(Integer userId) {
            Query query = createQuery("userId", userId);
            List<ObjectId> msgIds = getDatastore().findDistinct(query, "msgId", Praise.class, ObjectId.class);
            return msgIds;
        }
     public List<Integer> queryBlacklistUserId(int userId) {
            Query query = createQuery("userId", userId);
            addToQuery(query, "blacklist", 1);
            return distinct("toUserId", query, Integer.class);
        }
    in查询
     public long getPraiseCountByMsg(List<String> msgId) {
            Query query = new Query();
            query.addCriteria(Criteria.where("msgId").in(msgId));
            return count(query);
        }
    or查询
    query.addCriteria(new Criteria().orOperator(Criteria.where("manualPay_status").is(2),
    new Criteria().andOperator(Criteria.where("status").is(1)
    )));
    修改
    public void updateByCommentId(ObjectId commentId, Map<String, Object> map) {
            Query query = createQuery("commentId", commentId);
            Update ops = createUpdate();
            map.forEach((key, value) -> {
                ops.set(key, value);
            });
            update(query, ops);
        }
    模糊查询
    if(null != nickName){
                query.addCriteria(Criteria.where("nickName").regex(".*" + nickName + ".*"));
            }
    删除
    public void deleteMsg(int userId) {
            Query query = createQuery("userId", userId);
            deleteByQuery(query);
        }

     其他操作参考《MongoDB--Spring Data MongoDB详细的操作手册

  • 相关阅读:
    Educational Codeforces Round 20 A. Maximal Binary Matrix(模拟)
    SCU 4440 Rectangle (思维+暴力)
    poj 2799 IP Networks (模拟/水题)
    Uva 10629 Huge Mods (指数循环节)
    FUZ 1759 Super A^B mod C (指数循环节/模板)
    Uva 11149 Power of Matrix (倍增法/模板)
    poj 3863&&Gym
    Codeforces 392C Yet Another Number Sequence (矩阵快速幂+二项式展开)
    Uva 11029 Leading and Trailing (求n^k前3位和后3位)
    Uva 10006 Carmichael Numbers (快速幂)
  • 原文地址:https://www.cnblogs.com/zeussbook/p/15003672.html
Copyright © 2011-2022 走看看