我收藏了很多文件
[
{
a: 1,
b: 1,
c: [
{
cA1: "CA1",
CB1: {
CBA: "abc1",
CBB: "abcd",
CBC: "ancdf",
},
},
{
cA1: "CA1",
CB1: {
CBA: "abc2",
CBB: "abcd1",
CBC: "ancdf2",
},
},
],
},
{
a: 1,
b: 1,
c: [
{
cA1: "CA1",
CB1: {
CBA: "abc3",
CBB: "abcd3",
CBC: "ancdf3",
},
},
{
cA1: "CA1",
CB1: {
CBA: "abc2",
CBB: "abcd1",
CBC: "ancdf2",
},
},
],
},
{
a: 1,
b: 1,
c: [
{
cA1: "CA1",
CB1: {
CBA: "abc4",
CBB: "abcd4",
CBC: "ancdf4",
},
},
{
cA1: "CA1",
CB1: {
CBA: "abc24",
CBB: "abcd5",
CBC: "ancd6",
},
},
],
},
{
a: 1,
b: 1,
c: [
{
cA1: "CA1",
CB1: {
CBA: "abc1",
CBB: "abcd",
CBC: "ancdf",
},
},
{
cA1: "CA1",
CB1: {
CBA: "abc2",
CBB: "abcd1",
CBC: "ancdf2",
},
},
],
},
];
我想做的是根据CB 1对象的字段值,删除匹配单据中字段c的元素。
我所做的是
const x = db.collection.updateMany(
{},
{
$pull: {
c: {
$elemMatch: {
CB1: {
$in: [
{
CBA: "abc2",
CBB: "abcd1",
},
{
CBA: "abc1",
CBB: "abcd",
}
],
},
},
},
},
},
{ multi: true }
);
它不起作用。我们要做的是从c中删除所有元素,其中CB 1具有数组中$中提到的值的字段。如果它确实不可能在该级别上使用**$中的**,逐个删除也将起作用。
1条答案
按热度按时间bttbmeg01#
一个选项是:
了解它在playground example上的工作原理