MongoDB随笔

db        //查询当前使用的数据库
show dbs     //查询所有的数据库
use 【dbname】  //使用数据库   ;如果没有这个数据库会直接创建这个数据库
db.createCollection("[collection_name]")      //创建集合(在sql中叫表)
例子:
db.createCollection("student")
在集合中增删改查 文档(在sql中叫(行;记录;row))
增加:
db.[collection_name].insert([json格式])
替换:
db.[collection_name].update({[被替换的文档]}),{[替换的文档]}
修改:
       $set修改器
db.[collection_name].update({[要修改的文档]}),{$set:{[替换的文档]}},{multi:[true/false]}
注意:multi:false不是更新第一个匹配的文档,true不是更新所有匹配的文档
删除:
db.[collection_name].remove({[可以添加条件删除符合条件的文档]})
查询:
db.[collection_name].find([{可以添加条件}])
         投影查询:
     db.[collection_name].find([{查询条件}],{[field_name]:[0/1]})
     说明:[document_name]:[0/1]   --》 0表示所投影的域(field(在sql中表示字段或者column(列))),
创建用户:
db.createUser({user:"root",pwd:"root",roles:[{role:"root",db:"admin"}]})
说明     db:"[可以使用的数据库]"
在配置文件中添加,使用认证登录
#开启认证
auth=true
登录实例:
   mongo.exe -u root -p root --authenticationDatabase admin
        删除用户:
db.dropUser("用户名")
        修改用户:
use admin
db.updateUser("被修改的用户",{roles:[{role:"readWriteAnyDatabase",db:"admin"}]})
        修改密码:
use admin
db.changeUserPassword("被修改密码的用户名"."新密码")
 
 
在Spring Boot查询时的使用
// 对于MongoDB的Dao ,继承MongoRepository,其中CmsPage为模型,String为组件的类型
public interface CmsPageRepository extends MongoRepository<CmsPage,String> {
                                            //关于实现在,在Test中,MongoRepository有很多可以直接使用的查询方法
         //根据页面名称查询
         CmsPage findByPageName(String pageName);
        //验页面名称,站点ID 页面Path的唯一性
        CmsPage findByPageNameAndSiteIdAndPageWebPath(String PageName,String siteId,String pageWebPath);

//        Optional<CmsPage> findById(String pageId);
}

这上面findByPageName就是查询PageName条件,下面的findByPageNameAndSiteIdAndPageWebPath同理,只不过是3个条件。

================================================================================================================================================

对于上面Dao的模型类我在写的时候发现一个问题,以下面这个为例子记录一下

@Data
@ToString
@Document(collection = "sys_dictionary")
public class SysDictionary {

    @Id
    private String id;

    @Field("d_name")
    private String dName;

    @Field("d_type")
    private String dType;

    @Field("d_value")
    private List<SysDictionaryValue> dValue;

}

我在没有使用@Field("d_name")的时候,直接命名private String d_Name    注意这个下划线,我在使用findByd_Name的时候,好像只是在find  d  ,下划线后面的_Name全不见了,

这时候就需要加上@Field("d_name")才找到值。

上面的@Document(collection = "sys_dictionary")public class SysDictionary 也同理。

 

posted @ 2023-07-07 16:40  lksses  阅读(8)  评论(0编辑  收藏  举报