📌  相关文章
📜  如何在 mongodb 中获取数组对象值 (1)

📅  最后修改于: 2023-12-03 15:38:21.399000             🧑  作者: Mango

如何在 MongoDB 中获取数组对象值

在 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() 方法。