小编Soh*_*ham的帖子

MongoDB 中的 $elemMatch 查询

我有一个包含 2 个结构文档的“名称”集合:

文档 1:

    {
    a: 1
    b : [{name:"AAA",age:10},
         {name:"BBB",age:12},
         {name:"CCC",age:13}]
    }
Run Code Online (Sandbox Code Playgroud)

文档 2:

    {
    a: 2
    b : [{name:"DDD",age:14},
         {name:"EEE",age:15},
         {name:"FFF",age:16}]
    }
Run Code Online (Sandbox Code Playgroud)

由于我是 MongoDB 的新手,我试图找出使用 $elemMatch 运算符与不使用它的区别。基本上,我试图查询并找到第一个名称为 AAA 且年龄为 10 岁的文档(文档 1)。因此,使用 $elemMatch,我的查询如下所示:

db.name.find({b: {$elemMatch :{name:"AAA",age:10}}})
Run Code Online (Sandbox Code Playgroud)

这个查询工作得很好,但我的问题是,当我可以这样查询时,有什么需要使用这个查询:

db.name.find({b:{name:"AAA",age:10}})
Run Code Online (Sandbox Code Playgroud)

我相信 $elemMatch 应该有一些原因,只是试图找到差异。预先感谢您的回复!!!

crud mongodb mongodb-query

6
推荐指数
1
解决办法
6872
查看次数

MongoDB 重命名字段/键

我想更改 MongoDB 文档中的字段名称(只是字段名称而不是值)。该文档如下所示(如下所示),并且在 user= Soham 的集合中只有一个文档:

{_id : ObjectId(xxxxxxxxxxxx),
 user : "Soham",
 age  : 29
}
Run Code Online (Sandbox Code Playgroud)

现在我想将名为 'user' 的字段更改为 'name',而不是该字段的值。所以在 mongo shell 中我写了以下命令:

var soh = db.user.find({"user":"Soham"});
soh.name = soh.user;
delete soh.user;
db.user.update({"user":"Roshan"},soh);
Run Code Online (Sandbox Code Playgroud)

当我运行更新命令时,它抛出了我的错误。因为我是 MongoDB 的新手,所以不确定我哪里出错了。任何形式的帮助表示赞赏。

document insert insert-update mongodb

1
推荐指数
2
解决办法
5625
查看次数

更新 MongoDB 中的 _id 字段

我想更新其中一个文档中的 _id 字段(如下所示)。

{
_id : ObjectId("586d9d5d23352af1a4aa05f7"),
name: "Soham",
age : 99,
city : "XYZ"
}
Run Code Online (Sandbox Code Playgroud)

所以我运行了以下步骤:

var doc = db.names.find({name:"Soham"});
doc._id = 111 ; -- 111 is not present in that collection for any document
db.names.remove({_id:ObjectId("586d9d5d23352af1a4aa05f7")});
db.names.insert(doc);
Run Code Online (Sandbox Code Playgroud)

前 3 行没有抛出任何错误,但是当我运行 insert 命令时,它抛出了错误。任何人都可以让我知道出了什么问题。

提前致谢!!!

crud insert-update mongodb

1
推荐指数
1
解决办法
4184
查看次数

Update a field only if it exists in MongoDB

I have a document in collection testcol in MongoDB like this :

{
_id:111,
"xxx":"aaa",
"yyy":"bbb"
}
Run Code Online (Sandbox Code Playgroud)

I want to update the field yyy in the document, if the field is found then update it and if the field is not found then don't do anything.

When I am running my mongo db update command like db.testcol.update({_id:0},{$set:{"zzz":"ccc"}},{upsert: false}). Intentionally I gave the field as "zzz" in the update command so that it shouldn't do anything. But when I run …

upsert mongodb mongodb-query

1
推荐指数
1
解决办法
8502
查看次数

标签 统计

mongodb ×4

crud ×2

insert-update ×2

mongodb-query ×2

document ×1

insert ×1

upsert ×1