如何在MongoDb中更新数组值?
如何在MongoDb中更新阵列 这是我的shell脚本我想用这个脚本更新fileInfo有些产品有fileInfo存在有些产品有 文件信息不存在 因此,我的要求是,如果文件信息存在,它将更新,如果文件信息不存在,它将创建 我的代码会被什么修改?谢谢如何在MongoDb中更新数组值?,mongodb,database,Mongodb,Database,如何在MongoDb中更新阵列 这是我的shell脚本我想用这个脚本更新fileInfo有些产品有fileInfo存在有些产品有 文件信息不存在 因此,我的要求是,如果文件信息存在,它将更新,如果文件信息不存在,它将创建 我的代码会被什么修改?谢谢 { "_id" : ObjectId("56d460721cdb5a4b0a73d4ba"), "catId" : "56d4558b1cdb5a4b0a73d03b", "pname" : "ABCName", "b
{
"_id" : ObjectId("56d460721cdb5a4b0a73d4ba"),
"catId" : "56d4558b1cdb5a4b0a73d03b",
"pname" : "ABCName",
"brand" : "ABCBrand",
"actualPrice" : "19",
"offer" : 0,
"shopId" : "56d312a61cdb5a1a2d8045",
"mProId" : "569e04ecd08598371ebe53eb",
"del" : "N",
"createdOn" : "28-Feb-2016 19:29:29 UTC"
}
添加数据在每个文件中都是如此
"fileInfo" : [
{
"versionId" : "BHpKOLlsgIRF7JqcBrKLPDFC5OgUAUEp",
"fileKey" : "productFile/abc.jpg"
}
],
这是我的shell脚本代码
var product = currentDb.getCollection("product");
var shop_id = "56d312a61cdb5a1a2d8045";
var mproductData = mproduct.find();
var productData = product.find({shopId:shop_id});
var productData1 = product.find({shopId:shop_id}).count();
var count=0;
var mcount=0;
for(var i=0;i<mproductData.length();i++)
{
mcount++
for(var j=0;j<productData.length();j++)
{
if(mproductData[i]._id==productData[j].mProId)
{
count++;
var mpro_id = mproductData[i]._id;
var mfile_version = mproductData[i].fileInfo[0].versionId;
var mfile_key = mproductData[i].fileInfo[0].fileKey;
print(mpro_id);
print(mfile_info);
print(mfile_key);
if(mproductData[i]._id==productData[j].mProId)
{
count++;
var mpro_id = mproductData[i]._id;
var mfile_version = mproductData[i].fileInfo[0].versionId;
var mfile_key = mproductData[i].fileInfo[0].fileKey;
print(mpro_id);
print(mfile_info);
print(mfile_key);
product.update({"mProId":''+mpro_id+''},{"$set": {"fileInfo" : [{"versionId" : ''+mfile_info+'',"fileKey" : ''+mfile_key+''}]}};
}
}
}
var product=currentDb.getCollection(“产品”);
var shop_id=“56d312a61cdb5a1a2d8045”;
var mproductData=mpproduct.find();
var productData=product.find({shopId:shop\u id});
var productData1=product.find({shopId:shop_id}).count();
var计数=0;
var mcount=0;
对于(var i=0;iTry
如果它不存在,这将创建fileInfo
属性,否则只需更新它我没有完整的上下文,因此无法在我的计算机上复制您的代码和环境。我建议您查看并比较您正在做的产品。更新并将其与我的解决方案进行比较。它们看起来一样吗?您看到我的js代码了吗rhis fileInfo是一个示例数据,我想更新版本ID,fileKey取决于MPProduct。因此,每当我在脚本中使用您的代码时,它都会显示一个错误,将db.collection替换为product
。我相信您正在按原样使用它。不要在此处复制您的代码,而是更新您的帖子。同样,此论坛是免费的帮助您找到解决方案,而不是解决您的作业或家庭作业。因此,请返回并阅读您的代码,调试代码,并尝试找出您做错了什么?我们是来帮助您的,但不是来做您的作业或家庭作业的。如果您不懂编程,请使用谷歌搜索并阅读文档。
db.collection.update({},{$set: {"fileInfo" : [
{
"versionId" : "BHpKOLlsgIRF7JqcBrKLPDFC5OgUAUEp",
"fileKey" : "productFile/abc.jpg"
}
]}},{multi:true})