mongoose 查询子文档的方法
{
"__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!");
}
}
);
}
这种查询方法比较特殊,直接用子文档的属性作为查询条件
"item.men.user": sUser 也可以这样查找:
Lists.items.men.id("id");
此时查到的就是子文档中的某一条,而不是整个父文档,
执行删除
Lists.items.men.id("id");
在保存文档
mongoose 查询子文档的方法的更多相关文章
- mongoose子文档生成不了_id,查询困难的解决办法
以下是我的数据库表 本来是想设置一个自增属性,比如listId,来定义我的子list,sliderlist这些,这样能确保他的唯一性,结果尝试了很久都无法成功,原生,插件都无法成功, 这两个网址是讲的 ...
- ES 07 - Elasticsearch查询文档的六种方法
目录 1 Query String Search(查询串检索) 2 Query DSL(ES特定语法检索) 3 Query Filter(过滤检索) 4 Full Text Search(全文检索) ...
- mongodb子文档查询
--子文档分页 -- 测试数据 db.childTests.insert({ "_id" : 1, "item" : "ABC", &quo ...
- mongoDB多级子文档查询
db.getCollection('product').find({'coverage':{'$elemMatch':{'plan':{'$elemMatch':{'iscoverage':{'$in ...
- mongoose查询数据库步骤
建立dumall数据库,创建goods集合,导入数据文件,也可以自己手动插入. mongodb安装与环境搭建: http://www.cnblogs.com/ccyinghua/p/7887713.h ...
- ASP.NET MVC 5 - 查询Details和Delete方法
在这部分教程中,接下来我们将讨论自动生成的Details和Delete方法. 查询Details和Delete方法 打开Movie控制器并查看Details方法. public ActionResul ...
- Solr嵌套子文档的弊端以及一种替代方式
背景:在考察了多种工具后,我们决定使用solr来作为多标签用户管理体系的查询方案. 原计划:电话,call客,跟进等等记录上报到kafka,然后通过flume+morphline录入到solr中.每一 ...
- iStylePDF安全电子文档解决方案之电子合同在线订立
交易是商业世界不可或缺的一部分,而签名是交易的凭证.可是,尽管互联网和IT技术已经很发达,但每逢遇到签名,还是得用最原始的方法——握笔写字.与如今走到哪都能听到“互联网+”相比有点不合潮流,通过电子签 ...
- mongodb查询文档
说到查询,我们一般就想起了关系型数据库的查询了,比如:order by(排序).limit(分页).范围查询(大于某个值,小于某个值..,in查询,on查询,like查询等待很多),同样mongodb ...
随机推荐
- RenderPartial: No overload for method 'Write' takes 0 arguments
如下方法调用RenderPartial: 报“No overload for method 'Write' takes 0 arguments”的错误: @if (@Model != null &am ...
- Visual Studio Code和Docker开发asp.net core和mysql应用
Visual Studio Code和Docker开发asp.net core和mysql应用 .net猿遇到了小鲸鱼,觉得越来越兴奋.本来.net猿只是在透过家里那田子窗看外面的世界,但是看着海峡对 ...
- webstrom 常用快捷键
最近在学习javascript,同时发现了一款非常好用的IDE webstrom 现在记录改IDE的快捷键 1. ctrl + shift + n: 打开工程中的文件,目的是打开当前工程下任意目录的文 ...
- 图片和提交servlet的相对和绝对路径
xx.jsp在根目录下,图片的路径为:<img height="33" src="images/enter.gif" width="148&qu ...
- 解决Boost.Regex对中文支持不好的问题
解决Boost.Regex对中文支持不好的问题 - k.m.Cao - 博客频道 - CSDN.NET 解决Boost.Regex对中文支持不好的问题 k.m.Caov0.1 问题的提出: Boo ...
- 《C语言深度剖析》学习笔记----C语言中的符号
本节主要讲C语言中的各种符号,包括注释符.单引号双信号以及逻辑运算符等. 一.注释符 注释符号和注释在程序的预编译期就已经被解决了,在预编译期间,编译器会将注释符号和注释符号之间的部分简单的替换成为空 ...
- web基础-web工作原理,http协议,浏览器缓存
1,web工作原理 2,http协议 3,浏览器缓存 4,cookie和session -------------------------------------------------------- ...
- svn代码版本管理
1.0开发,做dev1.0的branch此时的目录结构svn://proj/ +trunk/ (不负担开发任务) +branches/ ...
- Android 支付宝接入时常见的问题
1.概述 首先说明下,Android支付宝接入用的是快捷支付,下载地址是https://b.alipay.com/order/techService.htm 支付宝移动接入地址https://b ...
- DOM缘起
DOM是现在按W3C标准的浏览器均实现的标准.HTML.CSS.DOM共同在结构.表现.交互上共同支撑起一个页面.当然,必须以用户为中心.平稳退化.逐渐增强.DOM的操作是通过JS来实现的.JS最初在 ...