有这么一个文档结构:
var doc1 = {
type:"floder",
name:"/",
contain:[
{type:"file",name:"1.txt",src:"/",size:'70KB',upLoadTime:'2015-07-01 23:40',realName:'a.html'},
{
type:"floder",name:"base",contain:[
{type:"floder",name:"b",contain:[
{type:"file",name:"index.html",src:"/base",size:'3.6KB',upLoadTime:'2015-07-01 23:40',realName:'b.txt'},
]},
{type:"file",name:"index.html",src:"/base",size:'3.6KB',upLoadTime:'2015-07-01 23:40',realName:'b.txt'},
{type:"file",name:"base.js",src:"/base",size:'3KB',upLoadTime:'2015-07-01 23:40',realName:'c.txt'}
]
}
]
};
doc是findOne()得到的一个文档,然后我对doc做了一个更改:
doc.contain.push({..});
之后更新doc:
collection.updateOne({_id:doc._id},{$set:doc},function(err){
mongo.close();
if(err){
console.log(err);
return callback(err);
}
callback(null);
});
发现报错 :topology was destroyed (拓扑结构改变)。
直接在使用shell窗口使用db.filesys.updateOne({},{$set:doc})是可以的。是因为官方库还的问题吗?
使用代码的话我必须先删除原来的doc再把刚刚更改的doc插入进去?我希望能直接更新doc。大家有没有好方法?
后来发现是我之前有一句mongo.close(),不好意意思,所以可以直接使用代码。