- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我有一个包含嵌入式文档数组的模型。
var CourseSchema = mongoose.Schema({
invitations: [InvitationSchema],
total:Number
});
var InvitationSchema = new mongoose.Schema({
token: { type:String, required: true},
email: String
});
想通过匹配请求中嵌入的邀请数组的 token 来更新/增加邀请总数,这里我遵循了http://diogogmt.wordpress.com/2012/03/23/update-elementmatch-and-the-positional-operator-on-mongodbmongoose/中的教程。
所以我试过了
var options = { new: false , select:'_id'};
CourseModel.update({'_id':id,'invitations':{'$elemMatch':{'token':token}}},{'$inc':{'total':1}},options,function(err,data) {
if(err){callback(err, null);}
else{
callback(null, data);
}
})
但它不起作用,如果我删除 'invitations':{'$elemMatch':{'token':token}},查询将起作用
最佳答案
根据 documentation $elemMatch 只能用于投影。但我发现了一个 example它说明了 $elemMatch 与 $all 的结合使用。试试这个。
1) 我通过以下方式在集合中创建了一个文档:
db.testColl.insert({count:0,arr:[{token:'xya'},{token:'xyb'},{token:'xyc'},{token:'xyd'},{token:'xye'}]})
2) 然后我使用不带
的查找命令db.testColl.find()
输出:
{ "_id" : ObjectId("52345478ef5f122b1c9c54be"), "count" : 0, "arr" : [ { "token" : "xya" }, { "token" : "xyb" }, { "token" : "xyc" }, { "token" : "xyd" }, { "token" : "xye" } ] }
3) 然后我依次运行以下命令:
db.testColl.update({arr:{$elemMatch:{token:'xya'}}},{'$inc':{'count':1}})
db.testColl.update({arr:{$elemMatch:{token:'xyb'}}},{'$inc':{'count':1}})
db.testColl.update({arr:{$elemMatch:{token:'xyc'}}},{'$inc':{'count':1}})
db.testColl.update({arr:{$elemMatch:{token:'xyd'}}},{'$inc':{'count':1}})
db.testColl.update({arr:{$elemMatch:{token:'xye'}}},{'$inc':{'count':1}})
4) 现在,db.testColl.find() 给了我所需的正确输出:
{ "_id" : ObjectId("52345478ef5f122b1c9c54be"), "count" : 5, "arr" : [ { "token" : "xya" }, { "token" : "xyb" }, { "token" : "xyc" }, { "token" : "xyd" }, { "token" : "xye" } ] }
那么,您的查询似乎没问题!!!
关于mongodb - 使用 $elemMatch 更新 mongodb 嵌入式文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18798035/
根据 mongodb 文档,$elemMatch 的语法是, t.find( { x : { $elemMatch : { a : 1, b : { $gt : 1 } } } } ) 我试过了,效果
我有以下文件 { "_id" : ObjectId("52da43cd6f0a61e8a5059aaf"), "assignments" : [ {
我正在为我的应用中的项目(产品)进行用户评分(赞/不赞)。 我似乎能够通过对象数组实现我想要的,但我想知道 mongodb 是否提供了一种方法来使用数字数组 (user_ids) 实现这一点。 db.
我有以下文件 { "_id" : ObjectId("52da43cd6f0a61e8a5059aaf"), "assignments" : [ {
我正在为我的应用中的项目(产品)进行用户评分(赞/不赞)。 我似乎能够通过对象数组实现我想要的,但我想知道 mongodb 是否提供了一种方法来使用数字数组 (user_ids) 实现这一点。 db.
这是我的对象: { "_id" : ObjectId("53fdcb6796cb9b9aa86f05b9"), "list" : [ "a", "b" ], "complist" : [ { "a"
我正在尝试查找与条件匹配的数组的最后一个元素,例如,如果我有来自 $elemMatch 的数据页: { _id: 1, students: [ { name: "john", scho
我有以下数据结构 { "_id" : ObjectId("523331359245b5a07b903ccc"), "a" : "a", "b" : [ {
我有一个 unitScores 集合,其中每个文档都有一个 id 和一个文档数组,如下所示: "_id": ObjectId("52134edd5b1c2bb503000001"), "scores"
我的 MongoDB 文档结构如下: {_id: ObjectId("53d760721423030c7e14266f"), fruit: 'apple', vitamins: [ {
考虑以下文档: { "_id" : "ID_01", "code" : ["001", "002", "003"], "Others" : "544554" } 我经历了这个MongoDB
所以,我有一个数据库,其中包含大量文档中的数组。我想使用 $in 找到我的查询与一个或多个数组元素完全匹配的整个文档。 所以,文档结构: { "_id": "76561198045636214",
查询运算符$and的用法有什么逻辑区别吗? db.collection.find({$and: [{"array.field1": "someValue"}, {"array.field2": 3}]
我知道您可以使用 $elemMatch 作为投影来限制子集合数组中的项目。当这样使用它时,它会返回匹配的子文档的所有字段,无论是否也指定了 query projections。 是否可以限制匹配子文档
我有一个像这样的集合(摘要)。 { "id":"summaryid", "locations": [ { "id": "loc1",
我有一个包含以下形式文档的集合: { "_id" : { "$oid" : "67bg............"}, "ID" : "xxxxxxxx", "senses"
我有一个像这样的集合(摘要)。 { "id":"summaryid", "locations": [ { "id": "loc1",
假设我有这样一个文档 { title : 'myTitle', favorites : [{name : 'text', number : 6}, {name : 'other', numbe
我的查询: { 'objects.item.opts1.opts2': { '$elemMatch': [ { name: 'false' } ] } } 返回:数组 opts2 中包含任何内容的任何
如何使用 elemMatch 对 SubDocument 数组进行搜索?我有一个名为 ReportCollection 的文档,其中包含以下元素:- /* 0 */ { "_id" : Obj
我是一名优秀的程序员,十分优秀!