gpt4 book ai didi

node.js - 如何在 MongoDB 的数组字段中投影特定元素?

转载 作者:可可西里 更新时间:2023-11-01 10:36:53 26 4
gpt4 key购买 nike

我在 MongoDB 中有这些数据:

{
"_id" : ObjectId("5c7e459f875ea5548de25722"),
"Autos" : [
{
"_id" : ObjectId("5cad9759e1c3895999adaceb"),
"deleted" : 1,

},
{
"_id" : ObjectId("5cad9a8be1c3895999adacef"),
"deleted" : 0,

},
{
"_id" : ObjectId("5cad9aa4e1c3895999adacf0"),
"deleted" : 0,
}
]
}

{
"_id" : ObjectId("5c7e45e9875ea5548de25724"),
"Shoemaking" : [
{
"_id" : ObjectId("5cad9770e1c3895999adacec"),
"deleted" : 1,
},
{
"_id" : ObjectId("5cad9a5de1c3895999adaced"),
"deleted" : 0,
},
]

我基本上想select * from table where deleted = 0
显示删除记录等于0的位置。

到目前为止,这是我尝试过的:

db.rental.find({"Autos.deleted":{$ne: 1}}).pretty()

db.rental.find({"Autos": {$elemMatch: {deleted: 1 } } } ).pretty()

db.rental.find({"Autos.deleted": 0},{"Autos": {$elemMatch:
{deleted:0}}});

但以上都不适合我。我做错了什么?

期望的输出:

{
"_id" : ObjectId("5c7e459f875ea5548de25722"),
"Autos" : [
{
"_id" : ObjectId("5cad9a8be1c3895999adacef"),
"deleted" : 0,

},
{
"_id" : ObjectId("5cad9aa4e1c3895999adacf0"),
"deleted" : 0,
}
]
}

{
"_id" : ObjectId("5c7e45e9875ea5548de25724"),
"Shoemaking" : [
{
"_id" : ObjectId("5cad9a5de1c3895999adaced"),
"deleted" : 0,
},
]
}

我希望输出类似于上面的内容,但是到目前为止我尝试过的所有查询要么只选择一个数组记录,要么什么都不选择。

最佳答案

db.rental.aggregate([
{
$project: {
Autos: {
$filter: {
input: "$Autos",
as: "auto",
cond: { $eq:["$$auto.deleted",0] }
}
}
}
}
])

关于node.js - 如何在 MongoDB 的数组字段中投影特定元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55608467/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com