gpt4 book ai didi

MongoDb 访问具有特定属性的对象数组

转载 作者:可可西里 更新时间:2023-11-01 09:12:21 24 4
gpt4 key购买 nike

我有一份文件如下:

{
user: 'hvt07',
photos: [
{
link: 'http://link.to.com/image1.jpg',
isPrivate: true
},
{
link: 'http://link.to.com/image2.jpg',
isPrivate: false
}
]
}

我想获取所有包含以下内容的照片:

isPrivate: false

我正在使用以下查询:

db.collection_name.find({ photos:{ $elemMatch:{isPrivate: false} } }).pretty()

我也试过:

db.collection_name.find({'photos.isPrivate': true}).pretty()

但两者都返回数组中的所有元素,即使是那些设置为:

isPrivate: true

请提出建议。

最佳答案

Aggregation是解决方案。

您需要使用 $unwind 解构 photos 数组运算符(operator)。接下来使用 $match选择 isPrivate: false 的文档。 $group您可以通过 _id 重新组合您的文档并使用 $push 重建您的 photos 数组运算符

db.collection_name.aggregate(
[
{$unwind: "$photos"},
{$match: {"photos.isPrivate": false}},
{$group: {"_id": {"id": "$_id", "user": "$user"}, photos: {$push: "$photos"}}}
{$project: {"_id": "$_id.id", "user": "$_id.user", "photos": 1, "_id": 0 }}
]
)

关于MongoDb 访问具有特定属性的对象数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30214517/

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