Для настраиваемого формата для каждого столбца вы можете установить формат для всей строки. fmt param обеспечивает форматирование для каждой строки
with open('output.dat') as ofile:
fmt = '%.0f %02.0f %4.1f %3.0f %4.0f %4.1f %4.0f %4.1f %4.0f'
np.savetxt(ofile, df.values, fmt=fmt)
Это «по замыслу» реализации $lookup
. То, что на самом деле происходит «под капотом» , это MongoDB internall преобразует аргументы в $lookup
в новый выразительный формат с использованием $expr
и $in
. Даже в версиях, предшествовавших тому, когда была реализована эта выразительная форма , внутренняя механика для «массива значений» была действительно такой же.
Решение здесь состоит в том, чтобы сохранить копию исходного массива в качестве ссылки для переупорядочения «соединенных» элементов:
collection.aggregate([
{"$match": {"_id": ObjectId("5c781752176c512f180048e3") }},
{"$lookup": {
"from": "collection2",
"let": { "classIds": "$Classes.ID" },
"pipeline": [
{ "$match": {
"$expr": { "$in": [ " Это «по замыслу» реализации $lookup
. То, что на самом деле происходит «под капотом» , это MongoDB internall преобразует аргументы в $lookup
в новый выразительный формат с использованием $expr
и $in
. Даже в версиях, предшествовавших тому, когда была реализована эта выразительная форма , внутренняя механика для «массива значений» была действительно такой же.
Решение здесь состоит в том, чтобы сохранить копию исходного массива в качестве ссылки для переупорядочения «соединенных» элементов:
[110] Или унаследованным [117 ] использование:
collection.aggregate([
{"$match": {"_id": ObjectId("5c781752176c512f180048e3") }},
{"$lookup": {
"from": "collection2",
"localField": "Classes.ID",
"foreignField": "_id",
"as": "results"
}},
{ "$unwind": "$results" },
{ "$addFields": {
"sort": {
"$indexOfArray": [ "$Classes.ID", "$results._id" ]
}
}},
{ "$sort": { "_id": 1, "sort": 1 } },
{ "$group": {
"_id": " Это «по замыслу» реализации $lookup
. То, что на самом деле происходит «под капотом» , это MongoDB internall преобразует аргументы в $lookup
в новый выразительный формат с использованием $expr
и $in
. Даже в версиях, предшествовавших тому, когда была реализована эта выразительная форма , внутренняя механика для «массива значений» была действительно такой же.
Решение здесь состоит в том, чтобы сохранить копию исходного массива в качестве ссылки для переупорядочения «соединенных» элементов:
[110] Или унаследованным [117 ] использование:
[111] Оба варианта дают одинаковый результат:
{
"_id" : ObjectId("5c781752176c512f180048e3"),
"Name" : "Pedro",
"Classes" : [
{
"ID" : ObjectId("5c7af2b2f6f6e47c9060d7ce")
},
{
"ID" : ObjectId("5c7af2bcf6f6e47c9060d7cf")
},
{
"ID" : ObjectId("5c7af2aaf6f6e47c9060d7cd")
}
],
"results" : [
{
"_id" : ObjectId("5c7af2b2f6f6e47c9060d7ce"),
"variable1" : "B"
},
{
"_id" : ObjectId("5c7af2bcf6f6e47c9060d7cf"),
"variable1" : "C"
},
{
"_id" : ObjectId("5c7af2aaf6f6e47c9060d7cd"),
"variable1" : "A"
}
]
}
Общая концепция заключается в использовании $indexOfArray
по сравнению с _id
значение из «присоединенного» содержимого , чтобы найти его «индексную» позицию в исходном массиве источника из "$Classes.ID"
. Различные варианты синтаксиса $lookup
имеют разные подходы к тому, как вы получаете доступ к этой копии и как вы в основном восстанавливаете.
$sort
, конечно, устанавливает порядок фактических документов, либо внутри конвейерной обработки для выразительной формы, либо через открытые документы $unwind
] . Там, где вы использовали $unwind
, вы затем $group
вернулись к исходной форме документа.
ПРИМЕЧАНИЕ : Примеры использования здесь зависят от MongoDB 3.4 для $indexOfArray
как минимум, а $REMOVE
совпадает с MongoDB 3.6 как было бы выразительным $lookup
.
Существуют и другие подходы к переупорядочению массива для предыдущих выпусков, но они более подробно продемонстрированы на Гарантирует ли MongoDB порядок $ in в предложении . Реально минимум, который вы должны сейчас использовать в качестве рабочей версии MongoDB, - это версия 3.4.
См. Политика поддержки в разделе Сервер MongoDB для получения полной информации о поддерживаемых выпусках и датах окончания.
BLOCKQUOTE>id",
"Name": { "$first": "$Name" },
"Classes": { "$first": "$Classes" },
"results": { "$push": "$results" }
}}
])
Оба варианта дают одинаковый результат:
{
"_id" : ObjectId("5c781752176c512f180048e3"),
"Name" : "Pedro",
"Classes" : [
{
"ID" : ObjectId("5c7af2b2f6f6e47c9060d7ce")
},
{
"ID" : ObjectId("5c7af2bcf6f6e47c9060d7cf")
},
{
"ID" : ObjectId("5c7af2aaf6f6e47c9060d7cd")
}
],
"results" : [
{
"_id" : ObjectId("5c7af2b2f6f6e47c9060d7ce"),
"variable1" : "B"
},
{
"_id" : ObjectId("5c7af2bcf6f6e47c9060d7cf"),
"variable1" : "C"
},
{
"_id" : ObjectId("5c7af2aaf6f6e47c9060d7cd"),
"variable1" : "A"
}
]
}
Общая концепция заключается в использовании $indexOfArray
по сравнению с _id
значение из «присоединенного» содержимого , чтобы найти его «индексную» позицию в исходном массиве источника из "$Classes.ID"
. Различные варианты синтаксиса $lookup
имеют разные подходы к тому, как вы получаете доступ к этой копии и как вы в основном восстанавливаете.
$sort
, конечно, устанавливает порядок фактических документов, либо внутри конвейерной обработки для выразительной формы, либо через открытые документы $unwind
] . Там, где вы использовали $unwind
, вы затем $group
вернулись к исходной форме документа.
ПРИМЕЧАНИЕ : Примеры использования здесь зависят от MongoDB 3.4 для $indexOfArray
как минимум, а $REMOVE
совпадает с MongoDB 3.6 как было бы выразительным $lookup
.
Существуют и другие подходы к переупорядочению массива для предыдущих выпусков, но они более подробно продемонстрированы на Гарантирует ли MongoDB порядок $ in в предложении . Реально минимум, который вы должны сейчас использовать в качестве рабочей версии MongoDB, - это версия 3.4.
См. Политика поддержки в разделе Сервер MongoDB для получения полной информации о поддерживаемых выпусках и датах окончания.
BLOCKQUOTE>id", "$classIds" ] }
}},
{ "$addFields": {
"sort": {
"$indexOfArray": [ "$classIds", " Это «по замыслу» реализации $lookup
. То, что на самом деле происходит «под капотом» , это MongoDB internall преобразует аргументы в $lookup
в новый выразительный формат с использованием $expr
и $in
. Даже в версиях, предшествовавших тому, когда была реализована эта выразительная форма , внутренняя механика для «массива значений» была действительно такой же.
Решение здесь состоит в том, чтобы сохранить копию исходного массива в качестве ссылки для переупорядочения «соединенных» элементов:
[110] Или унаследованным [117 ] использование:
collection.aggregate([
{"$match": {"_id": ObjectId("5c781752176c512f180048e3") }},
{"$lookup": {
"from": "collection2",
"localField": "Classes.ID",
"foreignField": "_id",
"as": "results"
}},
{ "$unwind": "$results" },
{ "$addFields": {
"sort": {
"$indexOfArray": [ "$Classes.ID", "$results._id" ]
}
}},
{ "$sort": { "_id": 1, "sort": 1 } },
{ "$group": {
"_id": " Это «по замыслу» реализации $lookup
. То, что на самом деле происходит «под капотом» , это MongoDB internall преобразует аргументы в $lookup
в новый выразительный формат с использованием $expr
и $in
. Даже в версиях, предшествовавших тому, когда была реализована эта выразительная форма , внутренняя механика для «массива значений» была действительно такой же.
Решение здесь состоит в том, чтобы сохранить копию исходного массива в качестве ссылки для переупорядочения «соединенных» элементов:
[110] Или унаследованным [117 ] использование:
[111] Оба варианта дают одинаковый результат:
{
"_id" : ObjectId("5c781752176c512f180048e3"),
"Name" : "Pedro",
"Classes" : [
{
"ID" : ObjectId("5c7af2b2f6f6e47c9060d7ce")
},
{
"ID" : ObjectId("5c7af2bcf6f6e47c9060d7cf")
},
{
"ID" : ObjectId("5c7af2aaf6f6e47c9060d7cd")
}
],
"results" : [
{
"_id" : ObjectId("5c7af2b2f6f6e47c9060d7ce"),
"variable1" : "B"
},
{
"_id" : ObjectId("5c7af2bcf6f6e47c9060d7cf"),
"variable1" : "C"
},
{
"_id" : ObjectId("5c7af2aaf6f6e47c9060d7cd"),
"variable1" : "A"
}
]
}
Общая концепция заключается в использовании $indexOfArray
по сравнению с _id
значение из «присоединенного» содержимого , чтобы найти его «индексную» позицию в исходном массиве источника из "$Classes.ID"
. Различные варианты синтаксиса $lookup
имеют разные подходы к тому, как вы получаете доступ к этой копии и как вы в основном восстанавливаете.
$sort
, конечно, устанавливает порядок фактических документов, либо внутри конвейерной обработки для выразительной формы, либо через открытые документы $unwind
] . Там, где вы использовали $unwind
, вы затем $group
вернулись к исходной форме документа.
ПРИМЕЧАНИЕ : Примеры использования здесь зависят от MongoDB 3.4 для $indexOfArray
как минимум, а $REMOVE
совпадает с MongoDB 3.6 как было бы выразительным $lookup
.
Существуют и другие подходы к переупорядочению массива для предыдущих выпусков, но они более подробно продемонстрированы на Гарантирует ли MongoDB порядок $ in в предложении . Реально минимум, который вы должны сейчас использовать в качестве рабочей версии MongoDB, - это версия 3.4.
См. Политика поддержки в разделе Сервер MongoDB для получения полной информации о поддерживаемых выпусках и датах окончания.
BLOCKQUOTE>id",
"Name": { "$first": "$Name" },
"Classes": { "$first": "$Classes" },
"results": { "$push": "$results" }
}}
])
Оба варианта дают одинаковый результат:
{
"_id" : ObjectId("5c781752176c512f180048e3"),
"Name" : "Pedro",
"Classes" : [
{
"ID" : ObjectId("5c7af2b2f6f6e47c9060d7ce")
},
{
"ID" : ObjectId("5c7af2bcf6f6e47c9060d7cf")
},
{
"ID" : ObjectId("5c7af2aaf6f6e47c9060d7cd")
}
],
"results" : [
{
"_id" : ObjectId("5c7af2b2f6f6e47c9060d7ce"),
"variable1" : "B"
},
{
"_id" : ObjectId("5c7af2bcf6f6e47c9060d7cf"),
"variable1" : "C"
},
{
"_id" : ObjectId("5c7af2aaf6f6e47c9060d7cd"),
"variable1" : "A"
}
]
}
Общая концепция заключается в использовании $indexOfArray
по сравнению с _id
значение из «присоединенного» содержимого , чтобы найти его «индексную» позицию в исходном массиве источника из "$Classes.ID"
. Различные варианты синтаксиса $lookup
имеют разные подходы к тому, как вы получаете доступ к этой копии и как вы в основном восстанавливаете.
$sort
, конечно, устанавливает порядок фактических документов, либо внутри конвейерной обработки для выразительной формы, либо через открытые документы $unwind
] . Там, где вы использовали $unwind
, вы затем $group
вернулись к исходной форме документа.
ПРИМЕЧАНИЕ : Примеры использования здесь зависят от MongoDB 3.4 для $indexOfArray
как минимум, а $REMOVE
совпадает с MongoDB 3.6 как было бы выразительным $lookup
.
Существуют и другие подходы к переупорядочению массива для предыдущих выпусков, но они более подробно продемонстрированы на Гарантирует ли MongoDB порядок $ in в предложении . Реально минимум, который вы должны сейчас использовать в качестве рабочей версии MongoDB, - это версия 3.4.
См. Политика поддержки в разделе Сервер MongoDB для получения полной информации о поддерживаемых выпусках и датах окончания.
BLOCKQUOTE>id" ]
}
}},
{ "$sort": { "sort": 1 } },
{ "$addFields": { "sort": "$REMOVE" }}
],
"as": "results"
}}
])
Или унаследованным [117 ] использование:
collection.aggregate([
{"$match": {"_id": ObjectId("5c781752176c512f180048e3") }},
{"$lookup": {
"from": "collection2",
"localField": "Classes.ID",
"foreignField": "_id",
"as": "results"
}},
{ "$unwind": "$results" },
{ "$addFields": {
"sort": {
"$indexOfArray": [ "$Classes.ID", "$results._id" ]
}
}},
{ "$sort": { "_id": 1, "sort": 1 } },
{ "$group": {
"_id": " Это «по замыслу» реализации $lookup
. То, что на самом деле происходит «под капотом» , это MongoDB internall преобразует аргументы в $lookup
в новый выразительный формат с использованием $expr
и $in
. Даже в версиях, предшествовавших тому, когда была реализована эта выразительная форма , внутренняя механика для «массива значений» была действительно такой же.
Решение здесь состоит в том, чтобы сохранить копию исходного массива в качестве ссылки для переупорядочения «соединенных» элементов:
[110] Или унаследованным [117 ] использование:
[111] Оба варианта дают одинаковый результат:
{
"_id" : ObjectId("5c781752176c512f180048e3"),
"Name" : "Pedro",
"Classes" : [
{
"ID" : ObjectId("5c7af2b2f6f6e47c9060d7ce")
},
{
"ID" : ObjectId("5c7af2bcf6f6e47c9060d7cf")
},
{
"ID" : ObjectId("5c7af2aaf6f6e47c9060d7cd")
}
],
"results" : [
{
"_id" : ObjectId("5c7af2b2f6f6e47c9060d7ce"),
"variable1" : "B"
},
{
"_id" : ObjectId("5c7af2bcf6f6e47c9060d7cf"),
"variable1" : "C"
},
{
"_id" : ObjectId("5c7af2aaf6f6e47c9060d7cd"),
"variable1" : "A"
}
]
}
Общая концепция заключается в использовании $indexOfArray
по сравнению с _id
значение из «присоединенного» содержимого , чтобы найти его «индексную» позицию в исходном массиве источника из "$Classes.ID"
. Различные варианты синтаксиса $lookup
имеют разные подходы к тому, как вы получаете доступ к этой копии и как вы в основном восстанавливаете.
$sort
, конечно, устанавливает порядок фактических документов, либо внутри конвейерной обработки для выразительной формы, либо через открытые документы $unwind
] . Там, где вы использовали $unwind
, вы затем $group
вернулись к исходной форме документа.
ПРИМЕЧАНИЕ : Примеры использования здесь зависят от MongoDB 3.4 для $indexOfArray
как минимум, а $REMOVE
совпадает с MongoDB 3.6 как было бы выразительным $lookup
.
Существуют и другие подходы к переупорядочению массива для предыдущих выпусков, но они более подробно продемонстрированы на Гарантирует ли MongoDB порядок $ in в предложении . Реально минимум, который вы должны сейчас использовать в качестве рабочей версии MongoDB, - это версия 3.4.
См. Политика поддержки в разделе Сервер MongoDB для получения полной информации о поддерживаемых выпусках и датах окончания.
BLOCKQUOTE>id",
"Name": { "$first": "$Name" },
"Classes": { "$first": "$Classes" },
"results": { "$push": "$results" }
}}
])
Оба варианта дают одинаковый результат:
{
"_id" : ObjectId("5c781752176c512f180048e3"),
"Name" : "Pedro",
"Classes" : [
{
"ID" : ObjectId("5c7af2b2f6f6e47c9060d7ce")
},
{
"ID" : ObjectId("5c7af2bcf6f6e47c9060d7cf")
},
{
"ID" : ObjectId("5c7af2aaf6f6e47c9060d7cd")
}
],
"results" : [
{
"_id" : ObjectId("5c7af2b2f6f6e47c9060d7ce"),
"variable1" : "B"
},
{
"_id" : ObjectId("5c7af2bcf6f6e47c9060d7cf"),
"variable1" : "C"
},
{
"_id" : ObjectId("5c7af2aaf6f6e47c9060d7cd"),
"variable1" : "A"
}
]
}
Общая концепция заключается в использовании $indexOfArray
по сравнению с _id
значение из «присоединенного» содержимого , чтобы найти его «индексную» позицию в исходном массиве источника из "$Classes.ID"
. Различные варианты синтаксиса $lookup
имеют разные подходы к тому, как вы получаете доступ к этой копии и как вы в основном восстанавливаете.
$sort
, конечно, устанавливает порядок фактических документов, либо внутри конвейерной обработки для выразительной формы, либо через открытые документы $unwind
] . Там, где вы использовали $unwind
, вы затем $group
вернулись к исходной форме документа.
ПРИМЕЧАНИЕ : Примеры использования здесь зависят от MongoDB 3.4 для
$indexOfArray
как минимум, а$REMOVE
совпадает с MongoDB 3.6 как было бы выразительным$lookup
.Существуют и другие подходы к переупорядочению массива для предыдущих выпусков, но они более подробно продемонстрированы на Гарантирует ли MongoDB порядок $ in в предложении . Реально минимум, который вы должны сейчас использовать в качестве рабочей версии MongoDB, - это версия 3.4.
См. Политика поддержки в разделе Сервер MongoDB для получения полной информации о поддерживаемых выпусках и датах окончания.
BLOCKQUOTE>