MongoDB node.js $ Нажмите на конкретный объект массива [duplicate]

Только для fun

class A {
    private a1 = void 0;
    private a2 = void 0;
}

class B extends A {
    private a3 = void 0;
    private a4 = void 0;
}

class C extends B {
    private a5 = void 0;
    private a6 = void 0;
}

class Describer {
    private static FRegEx = new RegExp(/(?:this\.)(.+?(?= ))/g); 
    static describe(val: Function, parent = false): string[] {
        var result = [];
        if (parent) {
            var proto = Object.getPrototypeOf(val.prototype);
            if (proto) {
                result = result.concat(this.describe(proto.constructor, parent));
            } 
        }
        result = result.concat(val.toString().match(this.FRegEx) || []);
        return result;
    }
}

console.log(Describer.describe(A)); // ["this.a1", "this.a2"]
console.log(Describer.describe(B)); // ["this.a3", "this.a4"]
console.log(Describer.describe(C, true)); // ["this.a1", ..., "this.a6"]

Обновление: если вы используете пользовательские конструкторы, эта функция будет ломаться.

28
задан mostafiz rahman 15 December 2016 в 07:42
поделиться

2 ответа

Возможно, что-то вроде этого, где ID - ваш ObjectId. Первый {} необходим для идентификации вашего документа. Не требуется использовать ObjectId, если у вас есть еще один уникальный идентификатор в вашей коллекции.

db.collection.update(
    { "_id": ID, "playlists._id": "58"},
    { "$push": 
        {"playlists.$.musics": 
            {
                "name": "test name",
                "duration": "4.00"
            }
        }
    }
)
49
ответ дан Neil Lunn 19 August 2018 в 19:09
поделиться
  • 1
    Здравствуй. Вы не указываете плейлист _id. У меня есть несколько плейлистов, каждый пользователь – balkondemiri 10 January 2015 в 12:41
  • 2
    Хм, пропустил это. Я обновил свой ответ. – Thomas Bormans 10 January 2015 в 12:50
  • 3
    Я сейчас пытаюсь. Этот код не работает :( – balkondemiri 10 January 2015 в 18:58
  • 4
    @balkondemiri Это возможно. Я не могу проверить это, так что это было предположение. Тем не менее он должен поставить вас в правильном направлении. – Thomas Bormans 10 January 2015 в 19:36
  • 5
    Всем спасибо. Я обновляю свой запрос. {& quot; _id ": ObjectId (" 54ad6c115e03635c0c000029 ")," плейлисты ._id ": 58} – balkondemiri 11 January 2015 в 07:19
0
ответ дан adflytec 31 October 2018 в 05:25
поделиться