Свести родительскую дочернюю коллекцию с помощью mongodb

Функция:

public float simpleSimilarity(String u, String v) {
    String[] a = u.split(" ");
    String[] b = v.split(" ");

    long correct = 0;
    int minLen = Math.min(a.length, b.length);

    for (int i = 0; i < minLen; i++) {
        String aa = a[i];
        String bb = b[i];
        int minWordLength = Math.min(aa.length(), bb.length());

        for (int j = 0; j < minWordLength; j++) {
            if (aa.charAt(j) == bb.charAt(j)) {
                correct++;
            }
        }
    }

    return (float) (((double) correct) / Math.max(u.length(), v.length()));
}

Тест:

String a = "This is the first string.";

String b = "this is not 1st string!";

// for exact string comparison, use .equals

boolean exact = a.equals(b);

// For similarity check, there are libraries for this
// Here I'll try a simple example I wrote

float similarity = simple_similarity(a,b);
1
задан Vikash 10 March 2019 в 02:01
поделиться

1 ответ

Вы можете использовать mongodb aggregation pipeline для достижения того же. Более конкретно, вы можете использовать $lookup дважды для заполнения parent и его parent и, наконец, $project для выравнивания структуры.

Попробуйте это:

Category.aggregation([{
    $lookup : {
        from :"categories",
        localField : "parent",
        foreignField : "_id",
        as  :"parent"
    }
},{
    $unwind : "$parent"
},{
    $lookup : {
        from :"categories",
        localField : "parent.parent",
        foreignField : "_id",
        as  :"parent.parent"
    }
},{
    $unwind : "$parent.parent"
},{
    $project : {
        l1_id  : "

Вы можете использовать mongodb aggregation pipeline для достижения того же. Более конкретно, вы можете использовать $lookup дважды для заполнения parent и его parent и, наконец, $project для выравнивания структуры.

Попробуйте это:

[110]

Примечание: $unwind используется после этапа $lookup, так как $lookup возвращает массив, нам нужно его развернуть преобразовать его в объект.

Для получения дополнительной информации, пожалуйста, прочитайте Mongodb $ lookup документов и $ проектной документации .

Надеюсь, это поможет вам.

id", l1_name : "$name", l2_id : "$parent._id", l2_name : "$parent.name" , l3_id : "$parent.parent._id", l2_name : "$parent.parent.name" } }]).then(result => { // result will have l1_id, l1_name, l2_id, l2_name, l3_id, l3_name // where l2 is the parent, // and l3 is the parent of parent }).

Примечание: $unwind используется после этапа $lookup, так как $lookup возвращает массив, нам нужно его развернуть преобразовать его в объект.

Для получения дополнительной информации, пожалуйста, прочитайте Mongodb $ lookup документов и $ проектной документации .

Надеюсь, это поможет вам.

0
ответ дан Ravi Shankar Bharti 10 March 2019 в 02:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: