我是MongoDB的初学者,我目前正在将它与php配对以尝试进行以下工作:
我想创建一个数据库来存储可以随时更新的信息,但它需要保留“文档添加日期:”日期。
总之:
IF文件存在:
- 更新文档中的所有内容,但“添加日期条目”文件除外
ELSE
- 使用数据+“添加在XXXXX上的文档”日期创建文档。
对于具有此格式的数据库:
Database{ document{ User_ID: "12345", Name: "Joe", More_Info: "" Date_Added_To_DB: "1372291496", Last_Updated:"1372291556"}}
我已经研究并询问过,到目前为止我所获得的最好的功能是如果它存在则会更新整个文档,如果不存在则会创建一个新文档。
db.Database.update({'User_ID':$ userID},{$ set:{'fieldName':new“data”}},{upsert:true})
答案 0 :(得分:1)
问题是你如何确定“文件”存在?通常,您使用唯一ID执行此操作。现在MongoDB的ObjectId
正在拯救,因为它已包含时间戳。这也可以是be used in queries。
您可能需要考虑调用字段User_ID
并使用_id
数据类型,而不是使用整数字段ObjectId
,以便免费获得该功能。
> db.test.insert({"foo" : "test"});
{ "_id" : ObjectId("51cb763e58bb4077aea65b3d"), "foo" : "test" }
> var foo = db.test.findOne();
> foo._id.getTimestamp();
ISODate("2013-06-26T23:16:14Z")