匹配元素看起来像:
{
"_id": {
"$oid": "519ebd1cef1fce06f90e3157"
},
"from": "Tester2",
"to": "Tester",
"messages": [
{
"username": "Tester2",
"message": "heeey",
"read": false
},
{
"username": "Tester",
"message": "hi!",
"read": false
},
{
"username": "Tester2",
"message": "test",
"read": false
}
],
}
Run Code Online (Sandbox Code Playgroud)
现在我尝试将read属性设置为用户名不等于的子元素的当前日期Tester:
var messages = db.collection('messages');
messages.update(
{
_id: new BSON.ObjectID("519ebd1cef1fce06f90e3157"),
messages: {
$elemMatch: { username: { $ne: "Tester" } }
}
},
{ $set: { 'messages.$.read': new Date() } },
{ multi: true }, function(error, result) { …Run Code Online (Sandbox Code Playgroud) 我想在当前文档中添加一个新字段(将来会用$ push填充的数组)但是我收到了错误 update failed: MongoError: Cannot apply $push/$pushAll modifier to non-array
我正在研究Meteor.users集合.
代码运行是:
var user = Meteor.userId();
Meteor.users.update({_id:user}, {$set: {"newfield": ["some data"]}});
Run Code Online (Sandbox Code Playgroud) 我收集了以下文件:
{
"_id" : ObjectId("56cbf9cd75de3ee9057b23c7"),
"title" : "Abc",
"comments" : [
{
"_id" : "",
"message" : "",
"active" : 1,
"status" : 1,
},
{
"_id" : "",
"message" : "",
"active" : 0,
"status" : 1,
},
{
"_id" : "",
"message" : "",
"active" : 1,
"status" : 1,
}
],
}
{
"_id" : ObjectId("553744ae75de3eb9128b4568"),
"title" : "Jhon",
"comments" : [
{
"_id" : "",
"message" : "",
"active" : 1,
"status" : 1,
}
] …Run Code Online (Sandbox Code Playgroud) 使用mongo shell需要添加到更新/删除查询中以返回受查询影响的行数.