关于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 ...
随机推荐
- OJ题目JAVA与C运行效率对比
[JAVA]深深跪了,OJ题目JAVA与C运行效率对比(附带清华北大OJ内存计算的对比) 看了园友的评论之后,我也好奇清橙OJ是怎么计算内存占用的.重新测试的情况附在原文后边. ----------- ...
- MVC4.0系统开发新手历程1
MVC4.0系统开发新手历程(一) 接手了一个简单的销售奖金计算的项目,虽然不算大但是业务逻辑比较复杂,还夹杂了很多的特殊情况,毕竟是大公司什么样的人都有,好了不多说切入正题,项目是公司的一个前辈负责 ...
- QQ登录(OAuth2.0)
QQ登录(OAuth2.0) 那些年,我们开发的接口之:QQ登录(OAuth2.0) 吴剑 2013-06-14 原创文章,转载必须注明出处:http://www.cnblogs.com/wujian ...
- Nginx安装配置与HelloWorld
<深入理解Nginx>阅读与实践(一):Nginx安装配置与HelloWorld 最近在读陶辉的<深入理解Nginx:模块开发与架构解析>,一是想跟着大牛练练阅读和编写开源代码 ...
- java用正则表达式获取domain
在工作中经常用到获取url的来源和域名的黑白名单功能.前段时间写了一个获取url中域名的方法.但是在测试过程中发现有些小问题. /** * 根据URL获取domain * @param url * @ ...
- PHP之-json转数组,支持多层嵌套json
function json_to_array($str) { if (is_string($str)) $str = json_decode($str); $arr=array(); foreach( ...
- set 类型
set类型 map 容器是键-值对的集合,好比以人名为键的地址和电话号码. 相反地,set 容器只是单纯的键的集合.map 适用于字典.电话本.商品价目表等类似的模型.set 适用于黑名单.白名单等. ...
- MS Sql Server 消除重复行 保留信息完整的一条 2011-11-26 13:19(QQ空间)
select company ,count(company) as coun into myls from mylist group by company having count(company)& ...
- 用android代码显示图片的一部分源码
ShowPoritionPictureActivity代码: [java] <span style="font-size:16px;"> package com.iwi ...
- c/c++ 算法之快速排序法 冒泡排序法,选择排序法,插入排序法
本文详细叙述和实现了快速排序算法,冒泡排序 选择排序 插入排序比较简单,原理在这里不再详述,直接用代码进行了实现. 快速排序法(quicksort)是目前所公认最快的排序方法之一(视解题的对象而定), ...