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 也同理。
难产难产难产