gpt4 book ai didi

mongodb - 如何在 MongoDB 的项目数组中查找包含非空数组的文档

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

我有一个如下所示的 mongo 文档集合,我正在尝试查找包含该文档中所有颜色图像的文档,而且文档模板不应为空。

[
{
"template" : "one",
"colors" : [
{
"name" : "yellow",
images : ["img_one", "image_two"]
},
{
"name" : "blue",
images : ["img_one", "image_two"]
}
]
},
{
"template" : "",
"colors" : [
{
"name" : "green",
images : ["img_one", "image_two"]
},
{
"name" : "orange",
images : ["img_one", "image_two"]
}
]
},
{
"template" : "three",
"colors" : [
{
"name" : "green",
images : ["img_one", "image_two"]
},
{
"name" : "orange",
images : []
}
]
}
]

我尝试了以下查询,但它不起作用。

db.getCollection('my_products').find({
"template": {$ne : ""},
"colors": {
$all: [
{
"$elemMatch": {"images": {$not : {$size : 0}}}
}
]
}
});

我该怎么做才能得到这样的东西?

最佳答案

给你...

db.my_products.aggregate([
{
"$match": {
"template": {
"$ne": ""
},
"colors": {
"$not": {
"$elemMatch": {
"images": {
"$size": 0
}
}
}
}
}
}
])

看到它在这里工作:https://mongoplayground.net/p/ylkdo9AAmZL

这是任何感兴趣的人的 c# 副本:

using MongoDB.Entities;
using System.Linq;

namespace StackOverflow
{
public class Program
{
public class product : Entity
{
public string template { get; set; }
public color[] colors { get; set; }
}

public class color
{
public string name { get; set; }
public string[] images { get; set; }
}

private static void Main(string[] args)
{
new DB("test");

var result = DB.Queryable<product>()
.Where(p =>
p.template != "" &&
!p.colors.Any(c => c.images.Count() == 0))
.ToList();
}
}
}

关于mongodb - 如何在 MongoDB 的项目数组中查找包含非空数组的文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57287064/

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