📅  最后修改于: 2023-12-03 15:38:21.399000             🧑  作者: Mango
在 MongoDB 中,可以存储数组类型的字段,这些数组中的元素也可以是对象。本文将介绍如何在 MongoDB 中获取数组对象值。
要获取数组中的所有元素,可以使用以下代码:
db.collection.find({}).toArray(function(err, result) {
if (err) throw err;
console.log(result);
});
这将返回集合中所有文档的数组形式,其中包含数组字段,如下所示:
[
{
"_id": ObjectId("6055a7caaf9d9c5857a5ade5"),
"name": "John",
"age": 30,
"hobbies": ["swimming", "running", "hiking"],
"__v": 0
},
{
"_id": ObjectId("6055a7e1af9d9c5857a5ade6"),
"name": "Sarah",
"age": 25,
"hobbies": ["reading", "yoga", "traveling"],
"__v": 0
}
]
要访问某个特定文档中数组字段的值,可以使用以下代码:
db.collection.findOne({ name: "John" }, function(err, result) {
if (err) throw err;
console.log(result.hobbies);
});
这将返回单个文档的对象形式,其中包含名为“hobbies”的数组字段的值:
["swimming", "running", "hiking"]
要获取数组中的特定元素,可以使用以下代码:
db.collection.find({ hobbies: "swimming" }).toArray(function(err, result) {
if (err) throw err;
console.log(result);
});
这会返回所有包含“swimming”作为其“hobbies”数组字段中元素的文档,如下所示:
[
{
"_id": ObjectId("6055a7caaf9d9c5857a5ade5"),
"name": "John",
"age": 30,
"hobbies": ["swimming", "running", "hiking"],
"__v": 0
}
]
要获取数组中特定元素的位置,可以使用以下代码:
db.collection.aggregate(
{ $unwind: "$hobbies" },
{ $match: { hobbies: "swimming" } },
{ $project: { _id: 0, hobbies: 1 } })
.toArray(function(err, result) {
if (err) throw err;
console.log(result);
});
这将返回一个包含“swimming”元素的对象,以及其在数组中的位置:
[
{
"hobbies" : "swimming",
"__v" : 0,
"index" : 0
}
]
以上就是如何在 MongoDB 中获取数组对象值的介绍。要获取数组中的所有元素,可以使用 find({})
方法,要获取数组中特定元素的位置,则可以使用 aggregate()
方法。