mongoose怎么在子文档的array里update或insert?

arabicsara 2014-06-06 08:32:45

//数据库是:
{
"__v": 1,
"_id": "538f5f0f6195a184108c8bd8",
"title": "GameTitle",
"item": [{
"_id": "538f5f0f6195a184108c8bd6",
"name": "itemOne",
"men": [{
"_id": "5390cccf0a84f41f37082874",
"user": "id22222222",
"score": 2000
}, {
"_id": "2390cccf0a84f41f37082873",
"user": "id33333333",
"score": 1000
}]
}, {
"_id": "538f5f0f6195a184108c8bd7",
"name": "itemTwo",
"men": []
}],
"status": 1
}


//代码是:
var MenSchema = new mongoose.Schema({
user: 'String',
score: {
type: Number,
default: 0
}
});

var ItemsSchema = new mongoose.Schema({
name: String
,men: [MenSchema]
});

ListsSchema = new mongoose.Schema({
title: {
type: String,
required: true
}
,item: [ItemsSchema]
});

var Items = mongoose.model('item', ItemsSchema);
var Lists = mongoose.model('lists', ListsSchema);
var Men = mongoose.model('men', MenSchema);
Insert and update:

function commit(sId, sItem, sUser, sIncreaseScore) {
Lists.findOne({, "_id": sId,
"item.name": sItem
}, null, function(err, documents) {
if (!err) {
if (documents != null) {
Lists.findOne({
"_id": sId,
"item.name": sItem,
"item.men.user": sUser
}, null, function(err, subDoc) {
if (!err) {
if (subDoc != null) {
//increase user score
//!!!!!!!!!!!!!But subDoc will get all arrays of item.men, so I can't update it correctly
} else {
//inser new user score
var userData = new Men({
user: sUser,
score: sScore
});

documents.item[0].men.push(userData);
documents.save(function(err) {
if (!err) {
///!!!!!!!!!!!!!!Will come this
console.log("documents error on save!");
} else {
console.log("save documents ok!");
}
});
}
}
});
}
} else {
console.log("not find the game item!");
}
}
);
}


这是一个类似iOS game center分数排行榜的数据库, 一个游戏里有多个item项目, 每个项目有多个玩家的分数数据.
document里包含了subDoc子文档,子文档里又有一个array,怎么找到这个array里的某个值,并对它进行修改?
...全文
230 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
sb3day 2014-07-16
  • 打赏
  • 举报
回复
没办法的, NOSQL不支持

87,997

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧