关于MongoDB数据库中文件唯一性的问题
※重要※——介绍一下我的环境:MongoDB的“win32-x86_64-2008plus-ssl-3.0.5”,MongoVUE版本是1.6.9,VS2010,dll是1.10版本。
MongoDB中文件的上传
试验①:使用VUE上传,{本地文件名相同,但文件内容不同},在VUE中直接点击“Add Files”上传文件,此时VUE会检查你的文件名是否重复,若重复就会给出提示“是改名?or还是跳过?”;这里咱们点击‘重命名’完成文件的上传,在VUE中可以看到如图所示:{前三个是我用VUE上传的}

前两个文件虽然内容不同[MD5值不同],但是仍然不允许同名;而第2个和第3个文件虽然名字不同,但是是同一个图片[MD5值一样];
这里我的理解是:在VUE管理MongoDB时,上传文件时【文件名不允许相同,对内容不做要求】
试验②:用程序上传,此时什么也不提示,文件直接上传成功;以下是比较:
第3,4,5个文件的名字全部相同,但是第3,4个文件的MD5值是相同的,再比较第4,5个文件,虽然名字一样,但是MD5值不同【同名但不同内容】。
这里我的理解是,程序在上传时不会去判断文件是否同名,只是通过dll库完成文件上传,剩余的由MongoDB来判断【不同文件MD5不同】
总结:这里我想表达的是怎样在MongoDB中保证文件的唯一性,目的是你从外部来查找文件时通过什么来唯一确定一个文件名。通过以上比较不难发现:文件名和MD5值都不能保证MongoDB中文件唯一,那应该采用什么来保证呢?答案是文件的ObjectID,就是BOSN中的【键值对“_id”和其值】,这个在VUE中鼠标停留在某一条数据上就会有显示,每一个文件的第1个键“_id”的值是不同的。我就不再贴图了,大伙可以自己上传几个文件看一下。
当然这里还有一个地方需要注意,虽然文件的ObjectID在这个MongoDB中是唯一的,但是MongoDB的ObjectID的生成办法采用的是[时间戳,机器,PID,计数器]而不是GUID,因此这里的ObjectID可不是全球唯一的(或者说全宇宙唯一的**),不能用它来作为Oracle等库的主键。
【第一次写,可能表达的不清楚,希望各位见谅。有什么错误欢迎指出和探讨】
关于MongoDB数据库中文件唯一性的问题的更多相关文章
- 记录python爬取猫眼票房排行榜(带stonefont字体网页),保存到text文件,csv文件和MongoDB数据库中
猫眼票房排行榜页面显示如下: 注意右边的票房数据显示,爬下来的数据是这样显示的: 网页源代码中是这样显示的: 这是因为网页中使用了某种字体的缘故,分析源代码可知: 亲测可行: 代码中获取的是国内票房榜 ...
- 如何将存储在MongoDB数据库中的数据导出到Excel中?
将MongoDB数据库中的数据导出到Excel中,只需以下几个步骤: (1)首先,打开MongoDB安装目录下的bin文件夹,(C:\Program Files (x86)\MongoDB\Serve ...
- python 读取SQLServer数据插入到MongoDB数据库中
# -*- coding: utf-8 -*-import pyodbcimport osimport csvimport pymongofrom pymongo import ASCENDING, ...
- .NET客户端下载SQL Server数据库中文件流保存的大电子文件方法(不会报内存溢出异常)
.NET客户端下载SQL Server数据库中文件流保存的大电子文件方法(不会报内存溢出异常) 前段时间项目使用一次性读去SQL Server中保存的电子文件的文件流然后返回给客户端保存下载电子文件, ...
- MongoDB数据库中更新与删除数据
MongoDB数据库中更新与删除数据 在MongoDB数据库中,可以使用Collection对象的update方法更新集合中的数据文档.使用方法如下所示: collection.update(sele ...
- MongoDB数据库中查询数据(下)
MongoDB数据库中查询数据(下) 在find中,options参数值为一个对象,用来设置查询数据时使用的选项,下面我们来对该参数值对象中可以使用的属性进行介绍: 1. fields; 该属性值为一 ...
- 在MongoDB数据库中查询数据(上)
在MongoDB数据库中查询数据(上) 在MongoDB数据库中,可以使用Collection对象的find方法从一个集合中查询多个数据文档,find方法使用方法如下所示: collection.fi ...
- mongodb数据库中插入数据
mongodb数据库中插入数据 一:connection 访问集合: 在mongodb数据库中,数据是存储在许多数据集合中,可以使用数据库对象的collection方法访问一个集合.该方法使用如下: ...
- apache log4j将日志保存在mongodb数据库中(转)
og4j与mongodb整合 Mongo Java driver jar包 log4mongo-java jar包 配置log4j.properties文件,使之整合mongodb: #将Mongod ...
随机推荐
- Make Things Move -- Javascript html5版(二)实现最基本的Sprite类和stage管理对象
现在这几篇写的都是比较基础的东西,有过相应开发经验的朋友可直接忽略啦. 计算机模拟的动画都是由很多静态的一连串影像(sprite)在一定帧率(fps)内逐帧播放出来的. 对于js来说,我们可以用提供的 ...
- jQuery获取动态生成的元素
需求描述:页面上可以动态添加数据,比如table,点击按钮可以动态添加行.又或页面 加载时table数据是通过ajax从后台获取的.而这时我们想要获取其中的某个值,又该如何获取呢? 如果是要通过某个事 ...
- Linux操作系统学习_用户态与内核态之切换过程
因为操作系统的很多操作会消耗系统的物理资源,例如创建一个新进程时,要做很多底层的细致工作,如分配物理内存,从父进程拷贝相关信息,拷贝设置页目录.页表等,这些操作显然不能随便让任何程序都可以做,于是就产 ...
- Linux学习之系统的构建
实验环境:ubuntu 12.04 LTS 内核版本:linux-3.9.4 因为一直以来都对Linux的工作机理比较感兴趣,所以正好这两天有机会好好的研究一下,那闲话不多说,直接进入正题. 俗话说的 ...
- Thrift RPC实战(一).初次体验Thrift
1.前言: Thrift作为Facebook开源的RPC框架, 通过IDL中间语言, 并借助代码生成引擎生成各种主流语言的rpc框架服务端/客户端代码,主要特点: 开发速度快: 通过编写RPC接口ID ...
- iphone/ipad/iOS on Linux Debian7/ubuntu12.04/linuxmint13/ubuntu14.04 compiling from source
The packages we need for ubuntu12.04 and its derived destros are: libimobiledevices, libplist, libus ...
- Apache错误:(20014)Internal error: Error retrieving pid file logs/httpd.pid
今天在虚拟机上打开apache出现如下错误: [root@ShiGuang ~]# service httpd start (20014)Internal error: Error retrievin ...
- [置顶] 如何高效使用和管理Bitmap--图片缓存管理模块的设计与实现
传送门 ☞ 轮子的专栏 ☞ 转载请注明 ☞ http://blog.csdn.net/leverage_1229 上周为360全景项目引入了图片缓存模块.因为是在Android4.0平台以上运作,出于 ...
- linux内核——进程,轻量级进程,线程,线程组
1.进程.轻量级进程.线程.线程组之间的关系 2.及它们的标识相关说明 一.进程.轻量级进程.线程.线程组之间的关系 借助上图说明: 进程P0有四条执行流,即线程, 主线程t0是它的第一个线程,且与进 ...
- winform总结4> 工欲善其事,必先利其器之xml校验
@echo 根据xml自动生成xml @echo 当前路径包含空格会导致执行失败 ::pause @echo off set path=%~dp0 for /r %path% %%i in (*.xm ...