Node.js 从MongoDB高效查询数组列表数据的正确方法是什么?

Node.js 从MongoDB高效查询数组列表数据的正确方法是什么?,node.js,mongodb,mongoose,Node.js,Mongodb,Mongoose,对这个很陌生!假设我有这个文件: { "_id" : ObjectId("00000000000000000"), "keyArray" : [ { "name" : "Miche", "score" : 0, "gender": "M", "group&

对这个很陌生!假设我有这个文件:

{
"_id" : ObjectId("00000000000000000"),
"keyArray" : [ 
    {
        "name" : "Miche",
        "score" : 0,
        "gender": "M",
        "group" : "A"
    }, 
    {
        "name" : "kim",
        "score" : -1,
        "gender": "F",
        "group" : "B"
    }, 
    {
        "name" : "john",
        "score" : 1,
        "gender": "M",
        "group" : "A"
    }
],
"key" : "value",
"key" : "value",
...
}
如何只列出
keyArray
中的所有数据而不显示其他键

db.users.find({},{u id:0,keyArray:{$elemMatch:{group:{group:“A”}}}}})
(这将只显示第一项)

我想从
keyArray
查询所有列表数据,而不使用
$elemMatch

{
    "name" : "Miche",
    "score" : 0,
    "gender": "M",
    "group" : "A"
}, 
{
    "name" : "kim",
    "score" : -1,
    "gender": "F",
    "group" : "A"
}, 
{
    "name" : "john",
    "score" : 1,
    "gender": "M",
    "group" : "A"
}
那么,从分数<0的数组中查询和删除项目的正确方法是什么

.findOneAndDelete( where { users.keyArray.score: { "score" : -1 }} )

.update( { }, { $pull: { keyArray.score: -1 } }, { multi: true } )

需要一些帮助来显示解决方法。

仅从mongoDB获取某些指定字段的方法

db.users.find({}, {keyArray:true})
这将只返回keyArray数据。如果需要,可以添加更多字段,通过这种方式

db.users.find({}, {field1:true, field2:true, field3:true})
如有必要,还可以使用
findOne({})


对于删除/更新数组中的某些指定字段/文档,对于您的情况,此官方文档将帮助您了解从mongoDB仅获取某些指定字段的详细信息

db.users.find({}, {keyArray:true})
这将只返回keyArray数据。如果需要,可以添加更多字段,通过这种方式

db.users.find({}, {field1:true, field2:true, field3:true})
如有必要,还可以使用
findOne({})


对于删除/更新数组中的某些指定字段/文档,对于您的情况,此官方文档将帮助您了解详细信息

db.users.find({},{keyArray:true})将仅返回keyArraydata@theTradeCoder你能告诉我更多关于按分数删除项目的信息吗?在这里你可以找到一个基于分数删除的解决方案,@theTradeCoder:post这是OP可以接受的答案..db.users.find({},{keyArray:true})将仅返回keyArraydata@theTradeCoder你能告诉我更多关于按分数删除项目的信息吗?在这里你可以找到一个基于分数删除项目的解决方案,@theTradeCoder:将此作为OP可以接受的答案发布..干杯!谢谢你的帮助,干杯!谢谢你的帮助。