{
"__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 查询子文档的方法的更多相关文章

  1. mongoose子文档生成不了_id,查询困难的解决办法

    以下是我的数据库表 本来是想设置一个自增属性,比如listId,来定义我的子list,sliderlist这些,这样能确保他的唯一性,结果尝试了很久都无法成功,原生,插件都无法成功, 这两个网址是讲的 ...

  2. ES 07 - Elasticsearch查询文档的六种方法

    目录 1 Query String Search(查询串检索) 2 Query DSL(ES特定语法检索) 3 Query Filter(过滤检索) 4 Full Text Search(全文检索) ...

  3. mongodb子文档查询

    --子文档分页 -- 测试数据 db.childTests.insert({ "_id" : 1, "item" : "ABC", &quo ...

  4. mongoDB多级子文档查询

    db.getCollection('product').find({'coverage':{'$elemMatch':{'plan':{'$elemMatch':{'iscoverage':{'$in ...

  5. mongoose查询数据库步骤

    建立dumall数据库,创建goods集合,导入数据文件,也可以自己手动插入. mongodb安装与环境搭建: http://www.cnblogs.com/ccyinghua/p/7887713.h ...

  6. ASP.NET MVC 5 - 查询Details和Delete方法

    在这部分教程中,接下来我们将讨论自动生成的Details和Delete方法. 查询Details和Delete方法 打开Movie控制器并查看Details方法. public ActionResul ...

  7. Solr嵌套子文档的弊端以及一种替代方式

    背景:在考察了多种工具后,我们决定使用solr来作为多标签用户管理体系的查询方案. 原计划:电话,call客,跟进等等记录上报到kafka,然后通过flume+morphline录入到solr中.每一 ...

  8. iStylePDF安全电子文档解决方案之电子合同在线订立

    交易是商业世界不可或缺的一部分,而签名是交易的凭证.可是,尽管互联网和IT技术已经很发达,但每逢遇到签名,还是得用最原始的方法——握笔写字.与如今走到哪都能听到“互联网+”相比有点不合潮流,通过电子签 ...

  9. mongodb查询文档

    说到查询,我们一般就想起了关系型数据库的查询了,比如:order by(排序).limit(分页).范围查询(大于某个值,小于某个值..,in查询,on查询,like查询等待很多),同样mongodb ...

随机推荐

  1. c 指针 及其位运算循环移动拔河比赛问题代码

    week_2_day1_7.7 周一//用字符数组 来实现 字母大小写转换#include<stdio.h>void desc( char *a ,int n){    char  *i ...

  2. Robot Framework语法学习(一)

    Robot Framework语法学习: 一.变量的声明.赋值与使用 1.变量标识符:每个变量都可以用  变量标识符 ${变量名} 来表示. 2.变量声明:可以在TestSuite上点右键或者在Edi ...

  3. android 向SD卡写入数据

    原文:android 向SD卡写入数据 1.代码: /** * 向sdcard中写入文件 * @param filename 文件名 * @param content 文件内容 */ public v ...

  4. uva 10972 RevolC FaeLoN cdoj 方老师和农场

    //自己写的第一发tarjan 解:先进行双连通分解并缩点,分解后一定是一颗树,设叶节点个数为n那么答案就是(n+1)/2 关于双连通分量求解:在跑tarjan时判断每个点连向父节点的边是否是桥,如果 ...

  5. AjaxPro.dll,asp.net 前台js调用后台方法(无刷新)

    1.什么是Ajax Ajax是异步Javascript和XML(Asynchronous JavaScript and XML)的英文缩写."Ajax"这个名词的发明人是Jesse ...

  6. Python 随即生成DAG(有向无环图)

    给校队选拔赛出了道DAG上的背包问题,需要生成DAG数据. 最开始使用的方法是先随机生成再判环,如果有环就重新生成.这种方法得到DAG的概率随着点数和边数的增加而急速降低,为了一个DAG要生成很多次, ...

  7. CSS垂直水平居中

    小小的总结一下:行内元素水平居中用text-align: center;块级元素水平居中用margin-left: auto; margin-right: auto; 首先讨论一下单行时的情况. 毫无 ...

  8. jQuery源码笔记——准备

    将变量局部化 作为一个库首要解决的问题就是防止影响全局的变量.自执行匿名函数可以很好的实现这一点. 传入window,undefiend是将全局变量改为局部变量,根据作用域链访问原理,访问更快一些,. ...

  9. 浏览器检测JS代码(兼容目前各大主流浏览器)

    var BrowserMatch = { init: function () { this.browser = this.getBrowser().browser || "An Unknow ...

  10. Spring-----Spring Jar包

    转载自:http://blog.csdn.net/hekewangzi/article/details/51713110